node-walk 0.3.0__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. {node_walk-0.3.0 → node_walk-0.4.0}/.github/workflows/release.yml +14 -5
  2. {node_walk-0.3.0 → node_walk-0.4.0}/CHANGELOG.md +8 -0
  3. {node_walk-0.3.0 → node_walk-0.4.0}/PKG-INFO +11 -1
  4. {node_walk-0.3.0 → node_walk-0.4.0}/README.md +10 -0
  5. node_walk-0.4.0/plans/binding-and-receiver-resolution-plan.md +629 -0
  6. node_walk-0.4.0/plans/graph-explorer-ux-plan.md +746 -0
  7. node_walk-0.4.0/plans/receiver-resolution-plan.md +361 -0
  8. node_walk-0.4.0/plans/relationship-resolution-redesign.md +1330 -0
  9. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/python/analyzer.py +1 -0
  10. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/python/scope.py +7 -1
  11. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/python/visitor.py +335 -39
  12. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/indexer.py +122 -6
  13. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/ir/enums.py +20 -0
  14. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/ir/models.py +36 -1
  15. node_walk-0.4.0/src/node_walk/resolution/__init__.py +7 -0
  16. node_walk-0.4.0/src/node_walk/resolution/base.py +79 -0
  17. node_walk-0.4.0/src/node_walk/resolution/bindings.py +105 -0
  18. node_walk-0.4.0/src/node_walk/resolution/calls.py +297 -0
  19. node_walk-0.4.0/src/node_walk/resolution/imports.py +71 -0
  20. node_walk-0.4.0/src/node_walk/resolution/inheritance.py +93 -0
  21. node_walk-0.4.0/src/node_walk/resolution/receiver.py +198 -0
  22. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/storage/base.py +38 -2
  23. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/storage/schema.py +29 -1
  24. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/storage/sqlite_store.py +149 -2
  25. node_walk-0.4.0/src/node_walk/web/app.js +1177 -0
  26. node_walk-0.4.0/src/node_walk/web/index.html +350 -0
  27. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/web/server.py +45 -4
  28. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/web/style.css +475 -90
  29. node_walk-0.4.0/tests/test_indexer.py +190 -0
  30. {node_walk-0.3.0 → node_walk-0.4.0}/tests/test_python_analyzer.py +15 -22
  31. node_walk-0.4.0/tests/test_resolution.py +30 -0
  32. node_walk-0.4.0/tests/test_resolution_bindings.py +90 -0
  33. {node_walk-0.3.0 → node_walk-0.4.0}/tests/test_storage.py +52 -0
  34. {node_walk-0.3.0 → node_walk-0.4.0}/tests/test_web_server.py +4 -3
  35. node_walk-0.3.0/src/node_walk/web/app.js +0 -704
  36. node_walk-0.3.0/src/node_walk/web/index.html +0 -157
  37. {node_walk-0.3.0 → node_walk-0.4.0}/.github/workflows/ci.yml +0 -0
  38. {node_walk-0.3.0 → node_walk-0.4.0}/.gitignore +0 -0
  39. {node_walk-0.3.0 → node_walk-0.4.0}/LICENSE +0 -0
  40. {node_walk-0.3.0 → node_walk-0.4.0}/plans/plan.md +0 -0
  41. {node_walk-0.3.0 → node_walk-0.4.0}/plans/traversable-graph.md +0 -0
  42. {node_walk-0.3.0 → node_walk-0.4.0}/pyproject.toml +0 -0
  43. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/__init__.py +0 -0
  44. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/__init__.py +0 -0
  45. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/base.py +0 -0
  46. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/python/__init__.py +0 -0
  47. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/analysis/python_analyzer.py +0 -0
  48. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/cli/__init__.py +0 -0
  49. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/cli/main.py +0 -0
  50. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/ir/__init__.py +0 -0
  51. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/query/__init__.py +0 -0
  52. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/query/engine.py +0 -0
  53. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/query/tree_formatter.py +0 -0
  54. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/storage/__init__.py +0 -0
  55. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/storage/repository.py +0 -0
  56. {node_walk-0.3.0 → node_walk-0.4.0}/src/node_walk/web/__init__.py +0 -0
  57. {node_walk-0.3.0 → node_walk-0.4.0}/tests/fixtures/nested_project/base.py +0 -0
  58. {node_walk-0.3.0 → node_walk-0.4.0}/tests/fixtures/nested_project/impl.py +0 -0
  59. {node_walk-0.3.0 → node_walk-0.4.0}/tests/fixtures/simple_project/services.py +0 -0
  60. {node_walk-0.3.0 → node_walk-0.4.0}/tests/test_ir.py +0 -0
  61. {node_walk-0.3.0 → node_walk-0.4.0}/tests/test_query_engine.py +0 -0
@@ -29,12 +29,22 @@ jobs:
29
29
  release:
30
30
  name: Auto-bump, Tag, Build & Publish
31
31
  runs-on: ubuntu-latest
32
+ environment:
33
+ name: ${{ inputs.target == 'testpypi' && 'testpypi' || 'pypi' }}
34
+ url: ${{ inputs.target == 'testpypi' && 'https://test.pypi.org/project/node-walk/' || 'https://pypi.org/project/node-walk/' }}
32
35
  steps:
36
+ - name: Generate GitHub App Token
37
+ id: app_token
38
+ uses: actions/create-github-app-token@v1
39
+ with:
40
+ app-id: ${{ secrets.RELEASE_APP_ID }}
41
+ private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
42
+
33
43
  - name: Check out repository
34
44
  uses: actions/checkout@v4
35
45
  with:
36
46
  fetch-depth: 0
37
- token: ${{ secrets.GITHUB_TOKEN }}
47
+ token: ${{ steps.app_token.outputs.token }}
38
48
 
39
49
  - name: Set up Python
40
50
  uses: actions/setup-python@v5
@@ -104,9 +114,8 @@ jobs:
104
114
 
105
115
  # Push commit and tag back to repository
106
116
  branch = os.environ.get("GITHUB_REF_NAME", "main")
107
- remote_url = f"https://x-access-token:{os.environ['GITHUB_TOKEN']}@github.com/{os.environ['GITHUB_REPOSITORY']}.git"
108
- subprocess.run(["git", "push", remote_url, f"HEAD:{branch}"], check=True)
109
- subprocess.run(["git", "push", remote_url, new_tag], check=True)
117
+ subprocess.run(["git", "push", "origin", f"HEAD:{branch}"], check=True)
118
+ subprocess.run(["git", "push", "origin", new_tag], check=True)
110
119
 
111
120
  with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as out:
112
121
  out.write(f"version={target_ver}\n")
@@ -114,7 +123,6 @@ jobs:
114
123
  EOF
115
124
  env:
116
125
  INPUT_BUMP_TYPE: ${{ inputs.bump_type }}
117
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
118
126
 
119
127
  - name: Build package distributions
120
128
  run: python -m build
@@ -128,6 +136,7 @@ jobs:
128
136
  - name: Create GitHub Release
129
137
  uses: softprops/action-gh-release@v2
130
138
  with:
139
+ token: ${{ steps.app_token.outputs.token }}
131
140
  tag_name: ${{ steps.auto_tag.outputs.tag }}
132
141
  files: dist/*
133
142
  generate_release_notes: true
@@ -11,6 +11,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ---
13
13
 
14
+ ## [0.4.0] - 2026-08-26
15
+
16
+ ---
17
+
18
+ ## [0.3.1] - 2026-08-25
19
+
20
+ ---
21
+
14
22
  ## [0.3.0] - 2026-08-23
15
23
 
16
24
  ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: node-walk
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Semantic code intelligence — local-first graph of your codebase for humans and LLMs
5
5
  Author: CodeGraph Contributors
6
6
  License: MIT
@@ -163,6 +163,16 @@ pytest tests/ -v
163
163
 
164
164
  ---
165
165
 
166
+ ## Release Automation Setup
167
+
168
+ The `Release & Publish` workflow can push release commits/tags to `main`.
169
+
170
+ If your repository ruleset requires pull requests for `main`, create a `RELEASE_PUSH_TOKEN` secret with a PAT from a user/app that is explicitly allowed to bypass that ruleset, then add that actor to the ruleset bypass list.
171
+
172
+ If `RELEASE_PUSH_TOKEN` is not set, the workflow falls back to `GITHUB_TOKEN`.
173
+
174
+ ---
175
+
166
176
  ## Graph Storage & Lifecycle
167
177
 
168
178
  The generated graph is stored in `.node_walk/graph.db` inside your indexed repository. It is disposable and can be re-indexed at any time with `node-walk index .`.
@@ -139,6 +139,16 @@ pytest tests/ -v
139
139
 
140
140
  ---
141
141
 
142
+ ## Release Automation Setup
143
+
144
+ The `Release & Publish` workflow can push release commits/tags to `main`.
145
+
146
+ If your repository ruleset requires pull requests for `main`, create a `RELEASE_PUSH_TOKEN` secret with a PAT from a user/app that is explicitly allowed to bypass that ruleset, then add that actor to the ruleset bypass list.
147
+
148
+ If `RELEASE_PUSH_TOKEN` is not set, the workflow falls back to `GITHUB_TOKEN`.
149
+
150
+ ---
151
+
142
152
  ## Graph Storage & Lifecycle
143
153
 
144
154
  The generated graph is stored in `.node_walk/graph.db` inside your indexed repository. It is disposable and can be re-indexed at any time with `node-walk index .`.