You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(cli): rename command to canpy; auto-generate README --help block
Rename the CLI command from `codeanalyzer` to `canpy`, paralleling the
TypeScript sibling's `cants`. The PyPI package (`codeanalyzer-python`) and the
importable `codeanalyzer` module are unchanged — only the console-script entry
point, the Typer app name, and user-facing docs/installer change.
- pyproject.toml: console-script entry point `canpy`
- __main__.py: Typer app name `canpy`
- packaging/install: rename installer to canpy-installer.sh; CANPY_* env vars
- scripts/update_readme.py: render `canpy --help` into the README between
<!-- BEGIN/END canpy-help --> markers (mirrors codeanalyzer-typescript's
scripts/update-readme.ts), so the documented options can't drift from the CLI
- release.yml: sync the README --help block alongside schema.neo4j.json before
publishing, and stage canpy-installer.sh as a release asset
- README/CHANGELOG: command + installer references; regenerated --help block
(also surfaces previously-undocumented --ray/--skip-tests/--file-name)
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,11 +16,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
-**`codeanalyzer.neo4j`** package: `catalog` (the single source-of-truth schema catalog), `project` (pure IR → graph rows), `cypher` (snapshot writer), `bolt` (incremental writer), and `rows` (the output-agnostic intermediate).
17
17
-**Schema conformance test** (`test/test_neo4j_schema.py`, always runs) — asserts the emitter never produces a label/relationship/property the catalog doesn't declare, and that the checked-in `schema.neo4j.json` is regenerated.
18
18
-**Neo4j Testcontainers integration test** (`test/test_neo4j_bolt.py`, opt-in via `RUN_CONTAINER_TESTS=1`) — spins up a real Neo4j and asserts the pushed graph, idempotent re-push, vanished-declaration cleanup, and full-run orphan pruning.
19
-
-**Install script** (`packaging/install/codeanalyzer-installer.sh`) — a `curl … | sh` installer that provisions the CLI via uv / pipx / pip, published as a release asset.
19
+
-**Install script** (`packaging/install/canpy-installer.sh`) — a `curl … | sh` installer that provisions the CLI via uv / pipx / pip, published as a release asset.
20
20
-**`schema-uml.drawio`** — a clean UML of the `analysis.json` schema (the `PyApplication` containment tree).
21
21
22
22
### Changed
23
-
- The release workflow now installs the `[neo4j]` extra, syncs `schema.neo4j.json` from source before publishing, and uploads the schema contract (`schema.json`) and installer script as GitHub Release assets.
23
+
-**The CLI command is now `canpy`** (was `codeanalyzer`), matching the `cants` (TypeScript) sibling. The PyPI package name is unchanged (`codeanalyzer-python`), as is the importable `codeanalyzer` module.
24
+
- The README `canpy --help` block is now generated from the live CLI (`scripts/update_readme.py`, between `<!-- BEGIN/END canpy-help -->` markers) so it can't drift from the code.
25
+
- The release workflow now installs the `[neo4j]` extra, syncs both the README `--help` block and `schema.neo4j.json` from source before publishing, and uploads the schema contract (`schema.json`) and installer script as GitHub Release assets.
This will save the analysis results in `analysis.msgpack` in the specified directory.
132
170
133
171
3.**Analysis with CodeQL enabled:**
134
172
```bash
135
-
codeanalyzer --input ./my-python-project --codeql
173
+
canpy --input ./my-python-project --codeql
136
174
```
137
175
Every run produces a symbol table **and** a call graph. By default, edges come from Jedi's lexical analysis. Adding `--codeql` resolves additional edges (including RPC / third-party / dynamically-dispatched targets) and merges them with the Jedi-derived edges. CodeQL also backfills resolved callees on Jedi-emitted call sites where Jedi couldn't resolve them.
138
176
139
177
***Note: CodeQL integration is experimental. The CLI is downloaded into `<cache_dir>/codeql/` on first use and reused thereafter.***
0 commit comments