Skip to content

packaging: the memory extra installs neo4j with no implementation behind it #3

Description

@Shashankss1205

Summary

pyproject.toml declares an optional dependency group:

memory = [
    "neo4j>=5.20",
]

Nothing in the package imports neo4j. pip install 'grapharc[memory]' therefore pulls a driver and gives the user no additional capability. The durable claim stores that do exist are SQLiteMemoryStore (no extra needed) and LadybugMemoryStore (the separate ladybug extra).

Why this matters

An extras table is a promise about what you get for the download. Honest dependency boundaries are part of the graph engineering case this project makes — every subsystem should be reachable from a shipped command, and an extra that installs a driver with no code behind it is the opposite of that. README already lists a "no implementation behind it" note; this issue is to make the packaging match reality.

Where in the code

  • pyproject.toml — the memory extra, around line 90
  • grapharc/memory/ — the stores that actually exist (sqlite_store.py, ladybug_store.py)
  • README.md — the Memory section's closing note about this extra

Confirm it:

grep -n -A3 "^memory" pyproject.toml
grep -rn "import neo4j\|from neo4j" grapharc/    # no hits

What to change

Pick one of these and say which in your PR:

  • (a) Remove it. Delete the memory extra, remove it from any all aggregation, and update the README sentence that mentions it. This is the smaller, safer change and is a fine first contribution.
  • (b) Rename it. If the intent was "the durable stores", point the name at something real rather than a driver.

Do not implement a Neo4j store as part of this issue — that is a much larger piece of work and should be proposed separately.

How to verify

grep -rn "memory" pyproject.toml
uv sync --all-extras --group dev     # must still resolve
uv run pytest -q
uv run ruff check .

Acceptance criteria

  • No extra advertises a capability the package does not have
  • uv sync --all-extras --group dev still resolves cleanly
  • README's Memory section agrees with pyproject.toml
  • uv run pytest green

Skill level — good first issue

This is mostly a packaging and documentation change, with no runtime logic involved. It is a good way to learn how this repo keeps its install story honest. If you are unsure whether to remove or rename, comment here first and we will settle it before you open a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationgood first issueGood for newcomershelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions