threadline-review 0.2.0b1__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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Threadline contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,198 @@
1
+ Metadata-Version: 2.4
2
+ Name: threadline-review
3
+ Version: 0.2.0b1
4
+ Summary: Visual, source-backed review of Python workflows before execution
5
+ Author: Threadline contributors
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Threadline contributors
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/Raman369AI/threadline
29
+ Project-URL: Documentation, https://github.com/Raman369AI/threadline/tree/main/docs
30
+ Project-URL: Repository, https://github.com/Raman369AI/threadline
31
+ Project-URL: Issues, https://github.com/Raman369AI/threadline/issues
32
+ Keywords: python,static-analysis,code-review,visualization
33
+ Classifier: Development Status :: 4 - Beta
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Requires-Python: >=3.12
37
+ Description-Content-Type: text/markdown
38
+ License-File: LICENSE
39
+ Provides-Extra: browser-test
40
+ Requires-Dist: websocket-client<2,>=1.7; extra == "browser-test"
41
+ Requires-Dist: selenium<5,>=4.35; extra == "browser-test"
42
+ Dynamic: license-file
43
+
44
+ # Threadline
45
+
46
+ [Documentation](docs/README.md) · [Getting started](docs/USING_THREADLINE.md) · [Capabilities](docs/CAPABILITIES.md) · [Contributing](CONTRIBUTING.md)
47
+
48
+ Threadline is a visual Python code reviewer for understanding a workflow before running it.
49
+
50
+ Select any function or method. Threadline shows its inputs and outputs, local control flow, calls into other files, return destinations, effects, and unresolved targets. Select any step to inspect the exact original source while keeping the surrounding workflow visible.
51
+
52
+ Threadline parses source. It does not import or execute the project being reviewed.
53
+
54
+ ## What you see
55
+
56
+ ```text
57
+ Request
58
+ │ request fields
59
+ ▼
60
+ Validate
61
+ ├─ invalid → early return
62
+ │ validated items + coupon
63
+ ▼
64
+ Calculate total
65
+ │ subtotal − discount + tax
66
+ ▼
67
+ Save order
68
+ │ persisted order
69
+ ▼
70
+ Response
71
+ ```
72
+
73
+ The interface provides three levels without sending you to another page:
74
+
75
+ - **Workflow:** the flow starting from the selected method.
76
+ - **Focused step:** branches, calls, transformations, effects, and returns at that point.
77
+ - **Source:** the exact code supporting the selected operation.
78
+
79
+ Calls stay nested under their call site. Workflow pages load progressively, and branch bodies load when expanded. Loops appear once, recursion is marked, and possible or unknown targets remain visibly uncertain.
80
+
81
+ ## Requirements
82
+
83
+ - Python 3.12 or later
84
+ - A local directory containing Python source
85
+ - A modern browser
86
+
87
+ The target project does not need to be installed and its dependencies do not need to be available.
88
+
89
+ ## Install
90
+
91
+ From a source checkout:
92
+
93
+ ```bash
94
+ git clone https://github.com/Raman369AI/threadline.git
95
+ cd threadline
96
+ python3 -m venv .venv
97
+ .venv/bin/python -m pip install .
98
+ ```
99
+
100
+ If you have a locally built or shared release wheel:
101
+
102
+ ```bash
103
+ python3 -m venv .venv
104
+ .venv/bin/python -m pip install threadline_review-0.2.0b1-py3-none-any.whl
105
+ ```
106
+
107
+ ## Review a repository
108
+
109
+ ```bash
110
+ .venv/bin/threadline review /path/to/python-repository
111
+ ```
112
+
113
+ Threadline prints and opens a local URL, normally <http://127.0.0.1:4173/>. Use `--port 4180` if that port is occupied.
114
+
115
+ In the browser:
116
+
117
+ 1. Use **Endpoints**, **Commands & tasks**, or **Modules & methods**, or search across all three.
118
+ 2. One click opens its workflow, local logic, and original source.
119
+ 3. Follow source-linked calls across files from that selected method.
120
+ 4. Expand branches or calls in place; use **Back to caller** to resume where you left off.
121
+ 5. Open **Coverage** to see parse failures, excluded paths, and unmodeled call syntax.
122
+
123
+ Try the bundled example:
124
+
125
+ ```bash
126
+ .venv/bin/threadline review example
127
+ ```
128
+
129
+ ## Review a Git change
130
+
131
+ Run Threadline from the working tree and provide the Git baseline:
132
+
133
+ ```bash
134
+ .venv/bin/threadline review /path/to/git-repository --base HEAD
135
+ ```
136
+
137
+ The **Changes** view distinguishes modified methods, previous and deleted methods, current source-linked callers, historical baseline callers, and possible impact. Choose **Compare before / after** to read both retained versions together. Threadline reads Git objects without checking out or executing either version.
138
+
139
+ ## Structured output
140
+
141
+ The browser is the primary interface. JSON commands are available for scripts and CI:
142
+
143
+ ```bash
144
+ threadline inspect /path/to/repository --query create_order
145
+ threadline inspect /path/to/repository --entrypoint package.module:create_order
146
+ threadline changes /path/to/repository --base HEAD
147
+ ```
148
+
149
+ Use `--source-root path` to select an application source directory. Repeat `--exclude path` for generated, vendored, or irrelevant directories.
150
+
151
+ ## What static analysis can establish
152
+
153
+ Threadline labels call relationships according to their evidence:
154
+
155
+ - **Supported:** the source resolves one local target.
156
+ - **Possible:** the source identifies one or more candidates but runtime dispatch remains uncertain.
157
+ - **External:** the target belongs outside the analyzed source.
158
+ - **Unknown:** the source does not identify a target.
159
+
160
+ These labels describe source structure. They do not represent an observed execution or prove that the code is correct.
161
+
162
+ See the [capability matrix](docs/CAPABILITIES.md), [usage guide](docs/USING_THREADLINE.md), and [validation record](docs/VALIDATION.md) for details.
163
+
164
+ ## Documentation
165
+
166
+ Start with the **[documentation hub](docs/README.md)** for installation, everyday review, analysis limits, and project maintenance.
167
+
168
+ | I want to… | Read |
169
+ | --- | --- |
170
+ | Review a repository or Git change | [Usage guide](docs/USING_THREADLINE.md) |
171
+ | Understand supported syntax and uncertain calls | [Capability matrix](docs/CAPABILITIES.md) |
172
+ | Check test results and platform coverage | [Validation record](docs/VALIDATION.md) |
173
+ | Understand keyboard access and browser checks | [Accessibility](docs/ACCESSIBILITY.md) |
174
+ | Check resource limits for a larger repository | [Performance and resource budgets](docs/PERFORMANCE.md) |
175
+ | Publish a package release | [PyPI publishing guide](docs/PUBLISHING.md) |
176
+ | Report a vulnerability privately | [Security policy](SECURITY.md) |
177
+
178
+ ## Validation
179
+
180
+ The self-contained suite covers source non-execution, exact statement and call accounting, branches, exceptions, loops, recursion, cross-file calls, snapshot evidence, Git changes, HTTP restrictions, packaging, and browser behavior.
181
+
182
+ A separate acceptance corpus tests pinned versions of [Flask](https://github.com/pallets/flask), [Requests](https://github.com/psf/requests), [FastAPI](https://github.com/fastapi/fastapi), [Celery](https://github.com/celery/celery), [Django](https://github.com/django/django), [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-python), and [Pants](https://github.com/pantsbuild/pants). See [public repository validation](docs/ONLINE_VALIDATION.md).
183
+
184
+ ```bash
185
+ python3 -m unittest discover -v
186
+ node --check threadline/static/app.js
187
+ node --check threadline/static/workflow.js
188
+ python3 tests/browser_smoke.py
189
+ python3 tests/online_repo_smoke.py --report artifacts/online-validation.json
190
+ python3 -m pip wheel . --no-deps -w dist
191
+ python3 tests/release_smoke.py dist/*.whl
192
+ ```
193
+
194
+ ## Project status
195
+
196
+ Threadline is a developer beta. The standalone application and wheel are usable now. The expanded corpus, performance budgets, Linux/macOS matrix, native Safari, accessibility checks, and clean-wheel installs pass. The maintainer owns the three first-time reviewer sessions and final release sign-off. See the [release checklist](docs/RELEASE_CHECKLIST.md) and [resource budgets](docs/PERFORMANCE.md).
197
+
198
+ See [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), [CHANGELOG.md](CHANGELOG.md), and the [MIT License](LICENSE).
@@ -0,0 +1,155 @@
1
+ # Threadline
2
+
3
+ [Documentation](docs/README.md) · [Getting started](docs/USING_THREADLINE.md) · [Capabilities](docs/CAPABILITIES.md) · [Contributing](CONTRIBUTING.md)
4
+
5
+ Threadline is a visual Python code reviewer for understanding a workflow before running it.
6
+
7
+ Select any function or method. Threadline shows its inputs and outputs, local control flow, calls into other files, return destinations, effects, and unresolved targets. Select any step to inspect the exact original source while keeping the surrounding workflow visible.
8
+
9
+ Threadline parses source. It does not import or execute the project being reviewed.
10
+
11
+ ## What you see
12
+
13
+ ```text
14
+ Request
15
+ │ request fields
16
+ ▼
17
+ Validate
18
+ ├─ invalid → early return
19
+ │ validated items + coupon
20
+ ▼
21
+ Calculate total
22
+ │ subtotal − discount + tax
23
+ ▼
24
+ Save order
25
+ │ persisted order
26
+ ▼
27
+ Response
28
+ ```
29
+
30
+ The interface provides three levels without sending you to another page:
31
+
32
+ - **Workflow:** the flow starting from the selected method.
33
+ - **Focused step:** branches, calls, transformations, effects, and returns at that point.
34
+ - **Source:** the exact code supporting the selected operation.
35
+
36
+ Calls stay nested under their call site. Workflow pages load progressively, and branch bodies load when expanded. Loops appear once, recursion is marked, and possible or unknown targets remain visibly uncertain.
37
+
38
+ ## Requirements
39
+
40
+ - Python 3.12 or later
41
+ - A local directory containing Python source
42
+ - A modern browser
43
+
44
+ The target project does not need to be installed and its dependencies do not need to be available.
45
+
46
+ ## Install
47
+
48
+ From a source checkout:
49
+
50
+ ```bash
51
+ git clone https://github.com/Raman369AI/threadline.git
52
+ cd threadline
53
+ python3 -m venv .venv
54
+ .venv/bin/python -m pip install .
55
+ ```
56
+
57
+ If you have a locally built or shared release wheel:
58
+
59
+ ```bash
60
+ python3 -m venv .venv
61
+ .venv/bin/python -m pip install threadline_review-0.2.0b1-py3-none-any.whl
62
+ ```
63
+
64
+ ## Review a repository
65
+
66
+ ```bash
67
+ .venv/bin/threadline review /path/to/python-repository
68
+ ```
69
+
70
+ Threadline prints and opens a local URL, normally <http://127.0.0.1:4173/>. Use `--port 4180` if that port is occupied.
71
+
72
+ In the browser:
73
+
74
+ 1. Use **Endpoints**, **Commands & tasks**, or **Modules & methods**, or search across all three.
75
+ 2. One click opens its workflow, local logic, and original source.
76
+ 3. Follow source-linked calls across files from that selected method.
77
+ 4. Expand branches or calls in place; use **Back to caller** to resume where you left off.
78
+ 5. Open **Coverage** to see parse failures, excluded paths, and unmodeled call syntax.
79
+
80
+ Try the bundled example:
81
+
82
+ ```bash
83
+ .venv/bin/threadline review example
84
+ ```
85
+
86
+ ## Review a Git change
87
+
88
+ Run Threadline from the working tree and provide the Git baseline:
89
+
90
+ ```bash
91
+ .venv/bin/threadline review /path/to/git-repository --base HEAD
92
+ ```
93
+
94
+ The **Changes** view distinguishes modified methods, previous and deleted methods, current source-linked callers, historical baseline callers, and possible impact. Choose **Compare before / after** to read both retained versions together. Threadline reads Git objects without checking out or executing either version.
95
+
96
+ ## Structured output
97
+
98
+ The browser is the primary interface. JSON commands are available for scripts and CI:
99
+
100
+ ```bash
101
+ threadline inspect /path/to/repository --query create_order
102
+ threadline inspect /path/to/repository --entrypoint package.module:create_order
103
+ threadline changes /path/to/repository --base HEAD
104
+ ```
105
+
106
+ Use `--source-root path` to select an application source directory. Repeat `--exclude path` for generated, vendored, or irrelevant directories.
107
+
108
+ ## What static analysis can establish
109
+
110
+ Threadline labels call relationships according to their evidence:
111
+
112
+ - **Supported:** the source resolves one local target.
113
+ - **Possible:** the source identifies one or more candidates but runtime dispatch remains uncertain.
114
+ - **External:** the target belongs outside the analyzed source.
115
+ - **Unknown:** the source does not identify a target.
116
+
117
+ These labels describe source structure. They do not represent an observed execution or prove that the code is correct.
118
+
119
+ See the [capability matrix](docs/CAPABILITIES.md), [usage guide](docs/USING_THREADLINE.md), and [validation record](docs/VALIDATION.md) for details.
120
+
121
+ ## Documentation
122
+
123
+ Start with the **[documentation hub](docs/README.md)** for installation, everyday review, analysis limits, and project maintenance.
124
+
125
+ | I want to… | Read |
126
+ | --- | --- |
127
+ | Review a repository or Git change | [Usage guide](docs/USING_THREADLINE.md) |
128
+ | Understand supported syntax and uncertain calls | [Capability matrix](docs/CAPABILITIES.md) |
129
+ | Check test results and platform coverage | [Validation record](docs/VALIDATION.md) |
130
+ | Understand keyboard access and browser checks | [Accessibility](docs/ACCESSIBILITY.md) |
131
+ | Check resource limits for a larger repository | [Performance and resource budgets](docs/PERFORMANCE.md) |
132
+ | Publish a package release | [PyPI publishing guide](docs/PUBLISHING.md) |
133
+ | Report a vulnerability privately | [Security policy](SECURITY.md) |
134
+
135
+ ## Validation
136
+
137
+ The self-contained suite covers source non-execution, exact statement and call accounting, branches, exceptions, loops, recursion, cross-file calls, snapshot evidence, Git changes, HTTP restrictions, packaging, and browser behavior.
138
+
139
+ A separate acceptance corpus tests pinned versions of [Flask](https://github.com/pallets/flask), [Requests](https://github.com/psf/requests), [FastAPI](https://github.com/fastapi/fastapi), [Celery](https://github.com/celery/celery), [Django](https://github.com/django/django), [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-python), and [Pants](https://github.com/pantsbuild/pants). See [public repository validation](docs/ONLINE_VALIDATION.md).
140
+
141
+ ```bash
142
+ python3 -m unittest discover -v
143
+ node --check threadline/static/app.js
144
+ node --check threadline/static/workflow.js
145
+ python3 tests/browser_smoke.py
146
+ python3 tests/online_repo_smoke.py --report artifacts/online-validation.json
147
+ python3 -m pip wheel . --no-deps -w dist
148
+ python3 tests/release_smoke.py dist/*.whl
149
+ ```
150
+
151
+ ## Project status
152
+
153
+ Threadline is a developer beta. The standalone application and wheel are usable now. The expanded corpus, performance budgets, Linux/macOS matrix, native Safari, accessibility checks, and clean-wheel installs pass. The maintainer owns the three first-time reviewer sessions and final release sign-off. See the [release checklist](docs/RELEASE_CHECKLIST.md) and [resource budgets](docs/PERFORMANCE.md).
154
+
155
+ See [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), [CHANGELOG.md](CHANGELOG.md), and the [MIT License](LICENSE).
@@ -0,0 +1,33 @@
1
+ [build-system]
2
+ requires = ["setuptools>=69", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "threadline-review"
7
+ version = "0.2.0b1"
8
+ description = "Visual, source-backed review of Python workflows before execution"
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ license = {file = "LICENSE"}
12
+ authors = [{name = "Threadline contributors"}]
13
+ classifiers = ["Development Status :: 4 - Beta", "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License"]
14
+ keywords = ["python", "static-analysis", "code-review", "visualization"]
15
+
16
+ [project.urls]
17
+ Homepage = "https://github.com/Raman369AI/threadline"
18
+ Documentation = "https://github.com/Raman369AI/threadline/tree/main/docs"
19
+ Repository = "https://github.com/Raman369AI/threadline"
20
+ Issues = "https://github.com/Raman369AI/threadline/issues"
21
+
22
+ [project.optional-dependencies]
23
+ browser-test = ["websocket-client>=1.7,<2", "selenium>=4.35,<5"]
24
+
25
+ [project.scripts]
26
+ threadline = "threadline.cli:main"
27
+
28
+ [tool.setuptools]
29
+ include-package-data = true
30
+ packages = ["threadline", "threadline.static"]
31
+
32
+ [tool.setuptools.package-data]
33
+ "threadline.static" = ["*.html", "*.js", "*.css"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,8 @@
1
+ """Threadline: source-backed Python workflow review."""
2
+
3
+ __version__ = "0.2.0b1"
4
+
5
+ from .analyzer import Analyzer, analyze
6
+ from .service import SnapshotStore, ThreadlineError
7
+
8
+ __all__ = ["Analyzer", "SnapshotStore", "ThreadlineError", "analyze", "__version__"]
@@ -0,0 +1,2 @@
1
+ from .cli import main
2
+ main()