Summary
The --postgres dependency error hands the user an install command that cannot work: it names the package graphify, but the published package is graphifyy (as the README itself notes: "The PyPI package is temporarily named graphifyy while the graphify name is being reclaimed"). graphify is 404 on PyPI, so following the instruction dead-ends.
Version: graphifyy==0.9.15, macOS arm64, installed via pipx.
Repro
$ graphify extract . --postgres 'postgresql://postgres:postgres@localhost:5434/mydb'
error: psycopg is required for --postgres. Install with: pip install 'graphify[postgres]'
Following it exactly:
$ pip install 'graphify[postgres]'
ERROR: Could not find a version that satisfies the requirement graphify[postgres] (from versions: none)
ERROR: No matching distribution found for graphify[postgres]
Confirming the name is unpublished:
$ curl -s -o /dev/null -w "%{http_code}" https://pypi.org/pypi/graphify/json
404
$ curl -s -o /dev/null -w "%{http_code}" https://pypi.org/pypi/graphifyy/json
200
Source
graphify/pg_introspect.py:18 is the only place in the package still using the old name:
"Install with: pip install 'graphify[postgres]'"
Everywhere else already says graphifyy — these are all correct:
detect.py:1313 → pip install graphifyy[office]
google_workspace.py:197 → pip install graphifyy[office,google]
extract.py:4401 → pip install "graphifyy[{_extra}]"
llm.py:952 → uv tool install "graphifyy[{extra}]"
Looks like a single missed spot from the rename rather than anything deeper.
Why this is worth more than a typo fix
Two reasons beyond the dead end:
-
It gates a headline feature. --postgres is the "app code + database schema in one graph" path. A user who hits this error and trusts the message concludes the extra is broken. In my case the working incantation turned out to be pipx runpip graphifyy install "graphifyy[sql,postgres,terraform]" — note that pipx install --force "graphifyy[...]" silently does not add extras when the venv already exists, so the obvious retry doesn't help either.
-
The name is unclaimed, and the README says it's being reclaimed. Right now pip install graphify[postgres] just fails. If anyone registers graphify on PyPI before the reclaim completes, this string turns into shipped code that instructs users to install a stranger's package. Worth fixing before that window rather than after.
Suggested fix
- "Install with: pip install 'graphify[postgres]'"
+ "Install with: pip install 'graphifyy[postgres]'"
Might be worth a test or grep guard asserting no pip install 'graphify[ / graphify[ (single-y) strings survive in user-facing messages, so the next extra added doesn't reintroduce it.
Also, minor and adjacent: while --postgres was failing, the same run emitted
113 .sql file(s) contributed nothing to the graph because a dependency is missing: tree_sitter_sql not installed — so on a Postgres-backed repo the schema is missing from both directions until the extras land. The graphifyy[sql] hint there is correct; it's only the postgres one that's wrong.
Summary
The
--postgresdependency error hands the user an install command that cannot work: it names the packagegraphify, but the published package isgraphifyy(as the README itself notes: "The PyPI package is temporarily namedgraphifyywhile thegraphifyname is being reclaimed").graphifyis 404 on PyPI, so following the instruction dead-ends.Version:
graphifyy==0.9.15, macOS arm64, installed viapipx.Repro
Following it exactly:
Confirming the name is unpublished:
Source
graphify/pg_introspect.py:18is the only place in the package still using the old name:"Install with: pip install 'graphify[postgres]'"Everywhere else already says
graphifyy— these are all correct:detect.py:1313→pip install graphifyy[office]google_workspace.py:197→pip install graphifyy[office,google]extract.py:4401→pip install "graphifyy[{_extra}]"llm.py:952→uv tool install "graphifyy[{extra}]"Looks like a single missed spot from the rename rather than anything deeper.
Why this is worth more than a typo fix
Two reasons beyond the dead end:
It gates a headline feature.
--postgresis the "app code + database schema in one graph" path. A user who hits this error and trusts the message concludes the extra is broken. In my case the working incantation turned out to bepipx runpip graphifyy install "graphifyy[sql,postgres,terraform]"— note thatpipx install --force "graphifyy[...]"silently does not add extras when the venv already exists, so the obvious retry doesn't help either.The name is unclaimed, and the README says it's being reclaimed. Right now
pip install graphify[postgres]just fails. If anyone registersgraphifyon PyPI before the reclaim completes, this string turns into shipped code that instructs users to install a stranger's package. Worth fixing before that window rather than after.Suggested fix
Might be worth a test or grep guard asserting no
pip install 'graphify[/graphify[(single-y) strings survive in user-facing messages, so the next extra added doesn't reintroduce it.Also, minor and adjacent: while
--postgreswas failing, the same run emitted113 .sql file(s) contributed nothing to the graph because a dependency is missing: tree_sitter_sql not installed— so on a Postgres-backed repo the schema is missing from both directions until the extras land. Thegraphifyy[sql]hint there is correct; it's only the postgres one that's wrong.