elspais 0.9.3__py3-none-any.whl → 0.11.1__py3-none-any.whl
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.
- elspais/cli.py +141 -10
- elspais/commands/hash_cmd.py +72 -26
- elspais/commands/reformat_cmd.py +458 -0
- elspais/commands/trace.py +157 -3
- elspais/commands/validate.py +44 -16
- elspais/core/models.py +2 -0
- elspais/core/parser.py +68 -24
- elspais/reformat/__init__.py +50 -0
- elspais/reformat/detector.py +119 -0
- elspais/reformat/hierarchy.py +246 -0
- elspais/reformat/line_breaks.py +220 -0
- elspais/reformat/prompts.py +123 -0
- elspais/reformat/transformer.py +264 -0
- elspais/sponsors/__init__.py +432 -0
- elspais/trace_view/__init__.py +54 -0
- elspais/trace_view/coverage.py +183 -0
- elspais/trace_view/generators/__init__.py +12 -0
- elspais/trace_view/generators/base.py +329 -0
- elspais/trace_view/generators/csv.py +122 -0
- elspais/trace_view/generators/markdown.py +175 -0
- elspais/trace_view/html/__init__.py +31 -0
- elspais/trace_view/html/generator.py +1006 -0
- elspais/trace_view/html/templates/base.html +283 -0
- elspais/trace_view/html/templates/components/code_viewer_modal.html +14 -0
- elspais/trace_view/html/templates/components/file_picker_modal.html +20 -0
- elspais/trace_view/html/templates/components/legend_modal.html +69 -0
- elspais/trace_view/html/templates/components/review_panel.html +118 -0
- elspais/trace_view/html/templates/partials/review/help/help-panel.json +244 -0
- elspais/trace_view/html/templates/partials/review/help/onboarding.json +77 -0
- elspais/trace_view/html/templates/partials/review/help/tooltips.json +237 -0
- elspais/trace_view/html/templates/partials/review/review-comments.js +928 -0
- elspais/trace_view/html/templates/partials/review/review-data.js +961 -0
- elspais/trace_view/html/templates/partials/review/review-help.js +679 -0
- elspais/trace_view/html/templates/partials/review/review-init.js +177 -0
- elspais/trace_view/html/templates/partials/review/review-line-numbers.js +429 -0
- elspais/trace_view/html/templates/partials/review/review-packages.js +1029 -0
- elspais/trace_view/html/templates/partials/review/review-position.js +540 -0
- elspais/trace_view/html/templates/partials/review/review-resize.js +115 -0
- elspais/trace_view/html/templates/partials/review/review-status.js +659 -0
- elspais/trace_view/html/templates/partials/review/review-sync.js +992 -0
- elspais/trace_view/html/templates/partials/review-styles.css +2238 -0
- elspais/trace_view/html/templates/partials/scripts.js +1741 -0
- elspais/trace_view/html/templates/partials/styles.css +1756 -0
- elspais/trace_view/models.py +353 -0
- elspais/trace_view/review/__init__.py +60 -0
- elspais/trace_view/review/branches.py +1149 -0
- elspais/trace_view/review/models.py +1205 -0
- elspais/trace_view/review/position.py +609 -0
- elspais/trace_view/review/server.py +1056 -0
- elspais/trace_view/review/status.py +470 -0
- elspais/trace_view/review/storage.py +1367 -0
- elspais/trace_view/scanning.py +213 -0
- elspais/trace_view/specs/README.md +84 -0
- elspais/trace_view/specs/tv-d00001-template-architecture.md +36 -0
- elspais/trace_view/specs/tv-d00002-css-extraction.md +37 -0
- elspais/trace_view/specs/tv-d00003-js-extraction.md +43 -0
- elspais/trace_view/specs/tv-d00004-build-embedding.md +40 -0
- elspais/trace_view/specs/tv-d00005-test-format.md +78 -0
- elspais/trace_view/specs/tv-d00010-review-data-models.md +33 -0
- elspais/trace_view/specs/tv-d00011-review-storage.md +33 -0
- elspais/trace_view/specs/tv-d00012-position-resolution.md +33 -0
- elspais/trace_view/specs/tv-d00013-git-branches.md +31 -0
- elspais/trace_view/specs/tv-d00014-review-api-server.md +31 -0
- elspais/trace_view/specs/tv-d00015-status-modifier.md +27 -0
- elspais/trace_view/specs/tv-d00016-js-integration.md +33 -0
- elspais/trace_view/specs/tv-p00001-html-generator.md +33 -0
- elspais/trace_view/specs/tv-p00002-review-system.md +29 -0
- {elspais-0.9.3.dist-info → elspais-0.11.1.dist-info}/METADATA +36 -18
- elspais-0.11.1.dist-info/RECORD +101 -0
- elspais-0.9.3.dist-info/RECORD +0 -40
- {elspais-0.9.3.dist-info → elspais-0.11.1.dist-info}/WHEEL +0 -0
- {elspais-0.9.3.dist-info → elspais-0.11.1.dist-info}/entry_points.txt +0 -0
- {elspais-0.9.3.dist-info → elspais-0.11.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# REQ-tv-d00014: Review API Server
|
|
2
|
+
|
|
3
|
+
**Level**: Dev | **Status**: Draft | **Implements**: REQ-tv-p00002
|
|
4
|
+
|
|
5
|
+
## Assertions
|
|
6
|
+
|
|
7
|
+
A. The API server SHALL be implemented as a Flask application with a `create_app(repo_root, static_dir)` factory function.
|
|
8
|
+
|
|
9
|
+
B. Thread endpoints SHALL support: `POST /api/reviews/reqs/{id}/threads` (create), `POST /api/reviews/reqs/{id}/threads/{tid}/comments` (add comment), `POST /api/reviews/reqs/{id}/threads/{tid}/resolve` (resolve), `POST /api/reviews/reqs/{id}/threads/{tid}/unresolve` (unresolve).
|
|
10
|
+
|
|
11
|
+
C. Status endpoints SHALL support: `GET /api/reviews/reqs/{id}/status` (get status), `POST /api/reviews/reqs/{id}/status` (change status in spec file), `GET /api/reviews/reqs/{id}/requests` (list requests), `POST /api/reviews/reqs/{id}/requests` (create request), `POST /api/reviews/reqs/{id}/requests/{rid}/approvals` (add approval).
|
|
12
|
+
|
|
13
|
+
D. Package endpoints SHALL support: `GET /api/reviews/packages` (list), `POST /api/reviews/packages` (create), `GET/PUT/DELETE /api/reviews/packages/{id}` (CRUD), `POST/DELETE /api/reviews/packages/{id}/reqs/{req_id}` (membership), `GET/PUT /api/reviews/packages/active` (active package).
|
|
14
|
+
|
|
15
|
+
E. Sync endpoints SHALL support: `GET /api/reviews/sync/status` (sync status), `POST /api/reviews/sync/push` (commit and push), `POST /api/reviews/sync/fetch` (fetch from remote), `POST /api/reviews/sync/fetch-all-package` (fetch all user branches).
|
|
16
|
+
|
|
17
|
+
F. The server SHALL enable CORS for cross-origin requests from the HTML viewer.
|
|
18
|
+
|
|
19
|
+
G. The server SHALL serve static files from the configured static directory at the root path.
|
|
20
|
+
|
|
21
|
+
H. All write endpoints SHALL optionally trigger auto-sync based on configuration.
|
|
22
|
+
|
|
23
|
+
I. Error responses SHALL use appropriate HTTP status codes and include JSON error details.
|
|
24
|
+
|
|
25
|
+
J. The server SHALL provide a `/api/health` endpoint for health checks.
|
|
26
|
+
|
|
27
|
+
## Rationale
|
|
28
|
+
|
|
29
|
+
The Flask API provides a lightweight HTTP interface for the review UI. The endpoint structure follows REST conventions with resource-oriented URLs. Auto-sync enables automatic git commits on each change for users who prefer immediate persistence, while manual sync is available for batched workflows.
|
|
30
|
+
|
|
31
|
+
*End* *Review API Server* | **Hash**: 00000000
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# REQ-tv-d00015: Status Modifier
|
|
2
|
+
|
|
3
|
+
**Level**: Dev | **Status**: Draft | **Implements**: REQ-tv-p00002
|
|
4
|
+
|
|
5
|
+
## Assertions
|
|
6
|
+
|
|
7
|
+
A. `find_req_in_file(file_path, req_id)` SHALL locate a requirement in a spec file and return the status line information.
|
|
8
|
+
|
|
9
|
+
B. `get_req_status(repo_root, req_id)` SHALL read and return the current status value from the spec file.
|
|
10
|
+
|
|
11
|
+
C. `change_req_status(repo_root, req_id, new_status, user)` SHALL update the status value in the spec file atomically.
|
|
12
|
+
|
|
13
|
+
D. Status values SHALL be validated against the allowed set: Draft, Active, Deprecated.
|
|
14
|
+
|
|
15
|
+
E. The status modifier SHALL preserve all other content and formatting when changing status.
|
|
16
|
+
|
|
17
|
+
F. The status modifier SHALL update the requirement's content hash footer after status changes.
|
|
18
|
+
|
|
19
|
+
G. Failed status changes SHALL NOT leave the spec file in a corrupted or partial state.
|
|
20
|
+
|
|
21
|
+
## Rationale
|
|
22
|
+
|
|
23
|
+
The status modifier enables the review workflow to complete the cycle by applying approved status changes directly to the spec files. This maintains the spec files as the authoritative source while the review system provides the approval workflow around changes.
|
|
24
|
+
|
|
25
|
+
Atomic updates ensure that interrupted operations don't corrupt spec files, which are the source of truth for requirements.
|
|
26
|
+
|
|
27
|
+
*End* *Status Modifier* | **Hash**: 00000000
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# REQ-tv-d00016: Review JavaScript Integration
|
|
2
|
+
|
|
3
|
+
**Level**: Dev | **Status**: Draft | **Implements**: REQ-tv-p00002
|
|
4
|
+
|
|
5
|
+
## Assertions
|
|
6
|
+
|
|
7
|
+
A. Review JavaScript modules SHALL be organized under the `TraceView.review` namespace to integrate with existing TraceView code.
|
|
8
|
+
|
|
9
|
+
B. The review panel SHALL support opening, closing, and stacking requirement cards for multi-requirement review sessions.
|
|
10
|
+
|
|
11
|
+
C. Thread UI SHALL support creating, viewing, resolving, unresolving, and replying to comment threads.
|
|
12
|
+
|
|
13
|
+
D. Sync operations SHALL handle git push/fetch with conflict detection and user feedback via UI indicators.
|
|
14
|
+
|
|
15
|
+
E. Package management UI SHALL support selecting, creating, editing, and deleting review packages.
|
|
16
|
+
|
|
17
|
+
F. Position highlighting SHALL visually indicate comment anchor locations in the requirement content.
|
|
18
|
+
|
|
19
|
+
G. Auto-sync functionality SHALL be configurable via the review panel settings.
|
|
20
|
+
|
|
21
|
+
H. Event-driven architecture SHALL use custom DOM events (`traceview:thread-created`, `traceview:comment-added`, etc.) for component communication.
|
|
22
|
+
|
|
23
|
+
I. The review panel SHALL integrate with the existing TraceView side panel system.
|
|
24
|
+
|
|
25
|
+
J. Mode toggle buttons SHALL allow switching between View, Edit, and Review modes.
|
|
26
|
+
|
|
27
|
+
## Rationale
|
|
28
|
+
|
|
29
|
+
Integrating with the existing TraceView namespace ensures consistent patterns and enables reuse of existing panel management, event handling, and UI components. The event-driven architecture decouples components and enables extensibility.
|
|
30
|
+
|
|
31
|
+
Position highlighting helps reviewers understand the spatial context of comments, especially when positions have drifted due to content changes.
|
|
32
|
+
|
|
33
|
+
*End* *Review JavaScript Integration* | **Hash**: 00000000
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# REQ-tv-p00001: HTML Generator Maintainability
|
|
2
|
+
|
|
3
|
+
**Level**: PRD | **Status**: Draft | **Implements**: -
|
|
4
|
+
|
|
5
|
+
## Assertions
|
|
6
|
+
|
|
7
|
+
A. The HTML generator SHALL produce a single, self-contained HTML file that can be opened in any modern browser without requiring a web server.
|
|
8
|
+
|
|
9
|
+
B. The HTML generator SHALL support two operational modes: standalone mode with embedded requirement data, and link-only mode with relative URLs to source files.
|
|
10
|
+
|
|
11
|
+
C. The HTML generator SHALL produce output that is functionally equivalent to the current implementation for all existing use cases.
|
|
12
|
+
|
|
13
|
+
D. The HTML generator codebase SHALL separate concerns such that HTML structure, CSS styling, and JavaScript behavior can be modified independently.
|
|
14
|
+
|
|
15
|
+
E. The HTML generator SHALL support IDE syntax highlighting and autocomplete for HTML, CSS, and JavaScript content.
|
|
16
|
+
|
|
17
|
+
F. The HTML generator SHALL maintain backward compatibility with existing command-line interfaces and configuration options.
|
|
18
|
+
|
|
19
|
+
G. The HTML generator SHALL support optional edit mode UI for batch requirement operations.
|
|
20
|
+
|
|
21
|
+
## Rationale
|
|
22
|
+
|
|
23
|
+
The current HTMLGenerator class in `trace_view/html/generator.py` is a 3,420-line monolith that mixes HTML, CSS, JavaScript, and Python logic. This makes the code difficult to maintain, test, and extend.
|
|
24
|
+
|
|
25
|
+
The current implementation has several challenges that motivate this refactoring:
|
|
26
|
+
- No IDE support for embedded HTML/CSS/JS (all are Python strings)
|
|
27
|
+
- Single 1,268-line method (`_generate_html`) with cyclomatic complexity of 598
|
|
28
|
+
- Tight coupling prevents independent modification of presentation layers
|
|
29
|
+
- Difficult to test components in isolation
|
|
30
|
+
|
|
31
|
+
The refactoring preserves all current functionality while enabling better developer experience and maintainability.
|
|
32
|
+
|
|
33
|
+
*End* *HTML Generator Maintainability* | **Hash**: 5dc964a5
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# REQ-tv-p00002: Collaborative Requirement Review System
|
|
2
|
+
|
|
3
|
+
**Level**: PRD | **Status**: Draft | **Implements**: REQ-tv-p00001
|
|
4
|
+
|
|
5
|
+
## Assertions
|
|
6
|
+
|
|
7
|
+
A. The system SHALL support threaded comments anchored to specific positions within requirement text.
|
|
8
|
+
|
|
9
|
+
B. The system SHALL support status change workflows with approval gates for transitions between Draft, Active, and Deprecated states.
|
|
10
|
+
|
|
11
|
+
C. Comment positions SHALL survive content changes through hash-based drift detection and fallback resolution strategies.
|
|
12
|
+
|
|
13
|
+
D. Review data SHALL be stored in git branches following the `reviews/{package}/{user}` naming convention.
|
|
14
|
+
|
|
15
|
+
E. Review packages SHALL group related requirements for coordinated review workflows.
|
|
16
|
+
|
|
17
|
+
F. The system SHALL function offline with git-based synchronization when connectivity is available.
|
|
18
|
+
|
|
19
|
+
G. The system SHALL provide a Flask API server for real-time review operations.
|
|
20
|
+
|
|
21
|
+
H. The review UI SHALL integrate with the existing trace_view HTML output as a collapsible panel.
|
|
22
|
+
|
|
23
|
+
## Rationale
|
|
24
|
+
|
|
25
|
+
The collaborative review system enables teams to review requirements without modifying the source specification files. By using git branches and JSON storage, the system maintains full audit trails compatible with FDA 21 CFR Part 11 requirements. Position-anchored comments allow precise feedback that survives requirement edits through intelligent re-anchoring.
|
|
26
|
+
|
|
27
|
+
The package system supports sprint-based or topic-based review workflows, while the branch-per-user model enables offline work with eventual consistency through git merge operations.
|
|
28
|
+
|
|
29
|
+
*End* *Collaborative Requirement Review System* | **Hash**: 00000000
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: elspais
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: Requirements validation and traceability tools - L-Space connects all libraries
|
|
5
5
|
Project-URL: Homepage, https://github.com/anspar/elspais
|
|
6
6
|
Project-URL: Documentation, https://github.com/anspar/elspais#readme
|
|
@@ -24,6 +24,11 @@ Classifier: Topic :: Software Development :: Documentation
|
|
|
24
24
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
25
25
|
Classifier: Typing :: Typed
|
|
26
26
|
Requires-Python: >=3.9
|
|
27
|
+
Provides-Extra: all
|
|
28
|
+
Requires-Dist: flask-cors>=4.0; extra == 'all'
|
|
29
|
+
Requires-Dist: flask>=2.0; extra == 'all'
|
|
30
|
+
Requires-Dist: jinja2>=3.0; extra == 'all'
|
|
31
|
+
Requires-Dist: mcp>=1.0; extra == 'all'
|
|
27
32
|
Provides-Extra: binary
|
|
28
33
|
Requires-Dist: pyinstaller>=6.0; extra == 'binary'
|
|
29
34
|
Provides-Extra: dev
|
|
@@ -34,6 +39,12 @@ Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
|
34
39
|
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
35
40
|
Provides-Extra: mcp
|
|
36
41
|
Requires-Dist: mcp>=1.0; extra == 'mcp'
|
|
42
|
+
Provides-Extra: trace-review
|
|
43
|
+
Requires-Dist: flask-cors>=4.0; extra == 'trace-review'
|
|
44
|
+
Requires-Dist: flask>=2.0; extra == 'trace-review'
|
|
45
|
+
Requires-Dist: jinja2>=3.0; extra == 'trace-review'
|
|
46
|
+
Provides-Extra: trace-view
|
|
47
|
+
Requires-Dist: jinja2>=3.0; extra == 'trace-view'
|
|
37
48
|
Description-Content-Type: text/markdown
|
|
38
49
|
|
|
39
50
|
# elspais
|
|
@@ -59,11 +70,11 @@ Description-Content-Type: text/markdown
|
|
|
59
70
|
### For End Users
|
|
60
71
|
|
|
61
72
|
```bash
|
|
62
|
-
#
|
|
63
|
-
pip install elspais
|
|
64
|
-
|
|
65
|
-
# Recommended for CLI tools: Isolated installation
|
|
73
|
+
# Recommended: Isolated installation with pipx
|
|
66
74
|
pipx install elspais
|
|
75
|
+
|
|
76
|
+
# Or standard pip installation
|
|
77
|
+
pip install elspais
|
|
67
78
|
```
|
|
68
79
|
|
|
69
80
|
### For Development
|
|
@@ -86,7 +97,7 @@ FROM python:3.11-slim
|
|
|
86
97
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
87
98
|
|
|
88
99
|
# Install elspais (10-100x faster than pip)
|
|
89
|
-
RUN uv pip install --system --no-cache elspais==0.9.
|
|
100
|
+
RUN uv pip install --system --no-cache elspais==0.9.3
|
|
90
101
|
```
|
|
91
102
|
|
|
92
103
|
```yaml
|
|
@@ -95,7 +106,7 @@ RUN uv pip install --system --no-cache elspais==0.9.1
|
|
|
95
106
|
uses: astral-sh/setup-uv@v2
|
|
96
107
|
|
|
97
108
|
- name: Install elspais
|
|
98
|
-
run: uv pip install --system elspais==0.9.
|
|
109
|
+
run: uv pip install --system elspais==0.9.3
|
|
99
110
|
```
|
|
100
111
|
|
|
101
112
|
**Note:** For regulated/medical software projects, always pin the exact version for reproducibility.
|
|
@@ -365,19 +376,23 @@ Options:
|
|
|
365
376
|
--help Show help
|
|
366
377
|
|
|
367
378
|
Commands:
|
|
368
|
-
validate
|
|
369
|
-
trace
|
|
370
|
-
hash
|
|
371
|
-
index
|
|
372
|
-
analyze
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
+
validate Validate requirements format, links, and hashes
|
|
380
|
+
trace Generate traceability matrix
|
|
381
|
+
hash Manage requirement hashes (verify, update)
|
|
382
|
+
index Manage INDEX.md file (validate, regenerate)
|
|
383
|
+
analyze Analyze requirement hierarchy (hierarchy, orphans, coverage)
|
|
384
|
+
changed Detect git changes to spec files
|
|
385
|
+
version Show version and check for updates
|
|
386
|
+
init Create .elspais.toml configuration
|
|
387
|
+
edit Edit requirements in-place (implements, status, move)
|
|
388
|
+
config View and modify configuration (show, get, set, ...)
|
|
389
|
+
rules View and manage content rules (list, show)
|
|
390
|
+
reformat-with-claude Reformat requirements using AI (Acceptance Criteria -> Assertions)
|
|
391
|
+
mcp MCP server commands (requires elspais[mcp])
|
|
379
392
|
```
|
|
380
393
|
|
|
394
|
+
See [docs/commands.md](docs/commands.md) for comprehensive command documentation.
|
|
395
|
+
|
|
381
396
|
## Development
|
|
382
397
|
|
|
383
398
|
```bash
|
|
@@ -386,6 +401,9 @@ git clone https://github.com/anspar/elspais.git
|
|
|
386
401
|
cd elspais
|
|
387
402
|
pip install -e ".[dev]"
|
|
388
403
|
|
|
404
|
+
# Enable git hooks (verifies docs stay in sync before push)
|
|
405
|
+
git config core.hooksPath .githooks
|
|
406
|
+
|
|
389
407
|
# Run tests
|
|
390
408
|
pytest
|
|
391
409
|
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
elspais/__init__.py,sha256=grQHU0RmRQChHUEb_cH_OuGmxADj5fDSNNayhXEQco4,1014
|
|
2
|
+
elspais/__main__.py,sha256=rCMaObqJeT_6dhyfND7S4dh_lv30j7Ww3Z7992YYwaE,130
|
|
3
|
+
elspais/cli.py,sha256=v6iFpfLe3_E5m74Hhyudq_qphp6TPSmIEvTI3z5JdmM,19530
|
|
4
|
+
elspais/commands/__init__.py,sha256=jS7ry2ez7xri-fUlYUw9fGKJi5yTHtVN4PU8voHjgLI,155
|
|
5
|
+
elspais/commands/analyze.py,sha256=5hE6YRL8AoAz2ukkR1rj6aiD2TNJi63UHYVJXmKoOUs,7135
|
|
6
|
+
elspais/commands/changed.py,sha256=H0v95I6eXqcYXfqIUHKb3rP_2jMiH52bkXMe0TXM6y8,4872
|
|
7
|
+
elspais/commands/config_cmd.py,sha256=KnH7vISH4041rqQrFftgffYLIujmIllZ_NCl5hIvCnE,13943
|
|
8
|
+
elspais/commands/edit.py,sha256=Ey42VCAsV2G1WzCZ3qy1IAoG88zeba3O0iZjiodJZZA,16054
|
|
9
|
+
elspais/commands/hash_cmd.py,sha256=XX_IbHkuJD3bc2MLxVEp2Tj5zAttDSKtpY0ZjxeKBjg,7844
|
|
10
|
+
elspais/commands/index.py,sha256=_jPGt_LnGI6gGJLonzOoM978YpTj14GWDCCemtSIah4,5283
|
|
11
|
+
elspais/commands/init.py,sha256=y2vxR5pvd0gmONJYjX3GtGbMfmJU11k_zRKWCm7O6Qo,3870
|
|
12
|
+
elspais/commands/reformat_cmd.py,sha256=j2pzd6ok_wcL9GXLMPrZM8HAgqtt8NVNlNb09ua0gQg,14843
|
|
13
|
+
elspais/commands/rules_cmd.py,sha256=b2d0l-rn-WTd6ULJWsjAebBTcKv_yndO7pVNc29QEoo,3415
|
|
14
|
+
elspais/commands/trace.py,sha256=6yqsfq1L3UYPkZE0Pscfzg9Ml3-fKNqoouqiZL1RnFI,12622
|
|
15
|
+
elspais/commands/validate.py,sha256=pzTEHhqLzpcL1YPa9wlJ4i0YvanK_jvhm2pB-Xr1z8E,15708
|
|
16
|
+
elspais/config/__init__.py,sha256=NkQEonHWWiXXCDrfehOCrsEYSuhj75KYj8oBQ7FuS4c,292
|
|
17
|
+
elspais/config/defaults.py,sha256=6GddebKwrDAiTp0tGzkNSEuGM_HeA846o8CQPYS4yz8,5177
|
|
18
|
+
elspais/config/loader.py,sha256=MnG_j2W1pOSRTTUHAOvu5xcJUAzDFNPvRjloFXpM15w,13827
|
|
19
|
+
elspais/core/__init__.py,sha256=OTQ1TOf7iLN4czmlkrV5tiaxpAat0VcrWpxYbfonAys,576
|
|
20
|
+
elspais/core/content_rules.py,sha256=4UoA_SUJK5R2MG9NE0Z8sNzMVPq3beEJGKEtX_NAeTk,4515
|
|
21
|
+
elspais/core/git.py,sha256=oM0jQUuqdMYc95j2Q1xqEH8a3X33u0Xe57TsTDUrhH4,11213
|
|
22
|
+
elspais/core/hasher.py,sha256=X3Ry_M6zgs2pZPZ3UFItlvM0mRW6aPS0SKPhCYeaFUE,4259
|
|
23
|
+
elspais/core/models.py,sha256=qwi9rVEUGLW2bJABW2s2-2OzyI3hdl3rdvkWRuTl908,9719
|
|
24
|
+
elspais/core/parser.py,sha256=uPYDjt4KWAbKzxCEgZucnc6cvTH8pj8W25LEVPyG8-w,23901
|
|
25
|
+
elspais/core/patterns.py,sha256=wEkzIjBRDDFyR3LZ-Lbm0a2IaU6Pdi80a9UUqb_S_aQ,13082
|
|
26
|
+
elspais/core/rules.py,sha256=WIn41JupkZannGgEfhqK__aomsJVU9aqpq__s2ZpZgU,19036
|
|
27
|
+
elspais/mcp/__init__.py,sha256=5yYWJpYkRu8AyJHUkbIP1HVngdyGEygzonJjdypAKb0,1143
|
|
28
|
+
elspais/mcp/__main__.py,sha256=oqpwTiE14vr5AGnP0MxRzILx_hYqonUMMK96dX-EXVw,134
|
|
29
|
+
elspais/mcp/context.py,sha256=MmYsDFA6nEVmgRffCQlqJMQjI0joQQJh1tFFPEeUeCA,5538
|
|
30
|
+
elspais/mcp/serializers.py,sha256=FuSJT_Qg5BTQEwdER0G7ES2IJYZw7mDqyQqQIZ6_3FA,2832
|
|
31
|
+
elspais/mcp/server.py,sha256=tgmeodGIqzz3vvGunDI6NhY0avQKn0F0yOiF7sbjJ-I,10416
|
|
32
|
+
elspais/reformat/__init__.py,sha256=nkEBuz9AYsQxAeI7KZ1yHW8tk0Vj2cT-YrJMMc9GRSM,1256
|
|
33
|
+
elspais/reformat/detector.py,sha256=DbR7JCRsUynajJPO_yrR1RrPgxozL02yTdRPzBJpNu4,3559
|
|
34
|
+
elspais/reformat/hierarchy.py,sha256=bYwB37jVXvcYLge-_-AxDolBLnkUU2YeoIMhXXu-gNA,8079
|
|
35
|
+
elspais/reformat/line_breaks.py,sha256=KLQ6AC5TclOLiopJoBzC-AQLea_LBW8Gg92hb_jE5Ko,6269
|
|
36
|
+
elspais/reformat/prompts.py,sha256=JH4-XJJvDci4JEkFMsR_zsozFfRhUQOTi4pfVIULaj0,4356
|
|
37
|
+
elspais/reformat/transformer.py,sha256=vsN2Zz5yehh_f-G5riaD6Znnac2E-3BKTqYldvo3CjY,8105
|
|
38
|
+
elspais/sponsors/__init__.py,sha256=2DFEaB4U7IxeIX96CnWnpstFIzUgPoHie-cbiiINaW8,13109
|
|
39
|
+
elspais/testing/__init__.py,sha256=hJB3V28HoeZUnIexi2mkaBwo0bQ7uSxBs-IZmcmpFtQ,879
|
|
40
|
+
elspais/testing/config.py,sha256=PQkrnuk_p8pObc-Nio3s3mIKLO4AfB-2eiwXruXTw0Y,1620
|
|
41
|
+
elspais/testing/mapper.py,sha256=EGund_KgeYbAnWRRcnuVs0xCzlf7EvJ-qiluSmvRIso,5649
|
|
42
|
+
elspais/testing/result_parser.py,sha256=u-TI5oytCqxz769AyU7WF9mOOULSzZAArvBg6JXwG1Q,9280
|
|
43
|
+
elspais/testing/scanner.py,sha256=PEn0qJCE2eX2SCru3Cc-v18mf81q7BNkPYE-MZ3m8CM,7037
|
|
44
|
+
elspais/trace_view/__init__.py,sha256=kffaqkRynNOaK3wn98WmrF6QIpNiaKSEYvlJaB6GDqM,1802
|
|
45
|
+
elspais/trace_view/coverage.py,sha256=35nrB6NAQWpcyvz-Q4hYB5hQAiEPKNv7cQtrSSdlSdY,6136
|
|
46
|
+
elspais/trace_view/models.py,sha256=s0iddIfpNCFvzYFMPUjYzSPiC_xkWdKjkWDXUJ83pu8,11295
|
|
47
|
+
elspais/trace_view/scanning.py,sha256=c4zxj9_wI5aYhUHb2boiI5kG0OXvhs8rFaJ2Gc229ls,7511
|
|
48
|
+
elspais/trace_view/generators/__init__.py,sha256=-A9RfO8ar-FxENLNCwtLKzWZDyhZIY510btJhdN6tek,424
|
|
49
|
+
elspais/trace_view/generators/base.py,sha256=5dsK0H_1W_slN7XzUoIa151j5FJSgYtX6-NwE7aS7Cc,12377
|
|
50
|
+
elspais/trace_view/generators/csv.py,sha256=2Pp3fxLA0XYpPB1d4s9rdEpQ2-UfXa-ICD4aK3PSBiM,3541
|
|
51
|
+
elspais/trace_view/generators/markdown.py,sha256=4AaPQiHDKrPsR_o2NfJcFM6Xp6q8m3201GL13yBnjaQ,5765
|
|
52
|
+
elspais/trace_view/html/__init__.py,sha256=zW4iO173LGlYt18pIrgBhgMdRYHghXA_8nJMT8o8RjE,806
|
|
53
|
+
elspais/trace_view/html/generator.py,sha256=qTFUG-0C2phJgilOgtDebUgV8Z6extdWqQDEa5ejuC4,45927
|
|
54
|
+
elspais/trace_view/html/templates/base.html,sha256=hy2G-Gw7qDCu7FEdt5VeBlIwoV9vJoKk1J5LDwEH8og,13176
|
|
55
|
+
elspais/trace_view/html/templates/components/code_viewer_modal.html,sha256=7S_ocNo2mfWMimXGlhhUWR7IUhdAiASdecsUPWmCdEw,736
|
|
56
|
+
elspais/trace_view/html/templates/components/file_picker_modal.html,sha256=hb7W0Gfkl_FFAz42wvVzPwHplWgRuU_0-NPmU5XM8rg,1182
|
|
57
|
+
elspais/trace_view/html/templates/components/legend_modal.html,sha256=S7j_KY6O3kgYusJBLF5uT22S3TnRahLtHSFgZlnGM7Y,3562
|
|
58
|
+
elspais/trace_view/html/templates/components/review_panel.html,sha256=8DDa5eZXpLMklGZBPV5N54VaxaqZlD1s3bbQPS59D2o,5592
|
|
59
|
+
elspais/trace_view/html/templates/partials/review-styles.css,sha256=8lh_Wf8Gc5BxAniL9tiHuKfDHnQI0UMMbSLqmQnhvUs,42833
|
|
60
|
+
elspais/trace_view/html/templates/partials/scripts.js,sha256=3qaZkFJj3oNg_p16cvpHKiE6rtPIWoM3LrFHx7TGJyQ,72717
|
|
61
|
+
elspais/trace_view/html/templates/partials/styles.css,sha256=csqKjs6RPrnIYm3kq-0BhXWi8shpeYiGPJ61Kvl6OXg,33321
|
|
62
|
+
elspais/trace_view/html/templates/partials/review/review-comments.js,sha256=sYT4r9At4qlWQMLchRfpfl8V7xY3jV8B4m97dkpRz_g,38903
|
|
63
|
+
elspais/trace_view/html/templates/partials/review/review-data.js,sha256=0tPPMBzoNoTeB-wWVmwR2gRDvOT8iK-iSigZA1ddT1E,32644
|
|
64
|
+
elspais/trace_view/html/templates/partials/review/review-help.js,sha256=Sy77ioN6stmdCR7OK4dYOdKLkzD3DJI8VCfPjFWGIyY,24047
|
|
65
|
+
elspais/trace_view/html/templates/partials/review/review-init.js,sha256=guLPdd4iH2bxAOi3GiDULQk7XDNzmvVOLx5UJlt9eU0,6435
|
|
66
|
+
elspais/trace_view/html/templates/partials/review/review-line-numbers.js,sha256=j8tU7lxqFljt6rBF7VU6j00qIhrpvA8EVXIsxCbfJCI,15855
|
|
67
|
+
elspais/trace_view/html/templates/partials/review/review-packages.js,sha256=QxLZXfpWK2xp4qrDy0dgTx7TuQBnkGmWb9jNM4clHHA,39754
|
|
68
|
+
elspais/trace_view/html/templates/partials/review/review-position.js,sha256=nRRcSLbM-OAxUQADbFbRN5XJtEcIER2gzoL-_9pLf-Y,19182
|
|
69
|
+
elspais/trace_view/html/templates/partials/review/review-resize.js,sha256=fS081RfoiJAe9QRoEkQfSvdZotPQcPG45s-WDCxIbsE,3136
|
|
70
|
+
elspais/trace_view/html/templates/partials/review/review-status.js,sha256=WgK2p56v1HKZpwuSX6zOv1KpfGAKLfpdb66qIRXsi2Q,26235
|
|
71
|
+
elspais/trace_view/html/templates/partials/review/review-sync.js,sha256=xr4qrNRmkRSb7YO3ErBjckJltSLbbAy5NfnYba50GrE,31541
|
|
72
|
+
elspais/trace_view/html/templates/partials/review/help/help-panel.json,sha256=A592sy3spIjvTBj87Yl_Ow8bm09s2JY-SAWc2Ac_jjU,14518
|
|
73
|
+
elspais/trace_view/html/templates/partials/review/help/onboarding.json,sha256=uqqLXdD1rgR8bobnBFTAkgcMbbrWeyRnk5jX-1vbvHI,2942
|
|
74
|
+
elspais/trace_view/html/templates/partials/review/help/tooltips.json,sha256=P9VfihRKL7BamrYfXRI855J51KMU29wbwpQGa5hO0y8,8714
|
|
75
|
+
elspais/trace_view/review/__init__.py,sha256=ZpMAJFu2q9VTLtTD5ThMo-RYaZ6pDDo9dnReyg779RA,1307
|
|
76
|
+
elspais/trace_view/review/branches.py,sha256=souMSF3WggcOwqsD_Kx_trVfpdWRIuOGF6acKn05-f8,36560
|
|
77
|
+
elspais/trace_view/review/models.py,sha256=7l_NoALci77TVM29KeBpjKx-jp8qzNgoIpXvzVC_3iM,40714
|
|
78
|
+
elspais/trace_view/review/position.py,sha256=Ep9IlcAeL0u46u-xks0o6qRQTMJnTCgf10W4FxCmwRo,20974
|
|
79
|
+
elspais/trace_view/review/server.py,sha256=yOyzyn8MrrR0OxwU-xCHp8TQDx1L3DVL4CDEm0aP13w,36363
|
|
80
|
+
elspais/trace_view/review/status.py,sha256=Q_uwm6Fe14eXSYduaGOCfHDuVXTt3lpl047q8W6T76o,15534
|
|
81
|
+
elspais/trace_view/review/storage.py,sha256=grirLOGFUIzj0AseOIUkjciLR8ge38vPb3dtZwL5H70,38193
|
|
82
|
+
elspais/trace_view/specs/README.md,sha256=LY3Ilp1RNYJYxAFV3KRTp2ASp5nyUhkFkgPFY2BEdEU,3282
|
|
83
|
+
elspais/trace_view/specs/tv-d00001-template-architecture.md,sha256=WUnD2cYSnGqaAtzaCzYQdMV2S_iWUF-aHb6-UYmW_5E,1753
|
|
84
|
+
elspais/trace_view/specs/tv-d00002-css-extraction.md,sha256=28KeqYDFrCsms8AXjKKiA8yn85_kT4nZOOqIlMB553c,1653
|
|
85
|
+
elspais/trace_view/specs/tv-d00003-js-extraction.md,sha256=R65UQhgIW8uyUqyAo2ZPUEeLZqO7sOH8RsKVsB1TL5w,2068
|
|
86
|
+
elspais/trace_view/specs/tv-d00004-build-embedding.md,sha256=2vI-zNi7Ibxnxwf0hvhLZh-JbrwBrUU68tp18wLXjQ4,1901
|
|
87
|
+
elspais/trace_view/specs/tv-d00005-test-format.md,sha256=7XeJmQdSG_5OJiwFxshmnzfaQlIFvhhbwqNe9w7EaIs,2804
|
|
88
|
+
elspais/trace_view/specs/tv-d00010-review-data-models.md,sha256=Yr8Pntii7bn-gXSPJGRSCBbui3dehc9_xi6ocWtslf8,1875
|
|
89
|
+
elspais/trace_view/specs/tv-d00011-review-storage.md,sha256=fjqz0tQ2QqIYXAIpCUbtU09ajMTqARPJTWCgnjQaeXA,2051
|
|
90
|
+
elspais/trace_view/specs/tv-d00012-position-resolution.md,sha256=GpW78rhbCoU-Ipo31MBdFgRHB_DRmZC2cVnSx3iLvxw,1885
|
|
91
|
+
elspais/trace_view/specs/tv-d00013-git-branches.md,sha256=TFNrgBJqalDGpU9avjMMJZ9DCo8zO5UJ7N4sJQcVfD8,1565
|
|
92
|
+
elspais/trace_view/specs/tv-d00014-review-api-server.md,sha256=1efAzKT-R2vrouEG0K6vW1byGSYyNoHnpQwOxg84ZgM,2189
|
|
93
|
+
elspais/trace_view/specs/tv-d00015-status-modifier.md,sha256=MK7YwLWr0KFZXImJefFV171vBeNbTdtaWCVgyxSXqec,1285
|
|
94
|
+
elspais/trace_view/specs/tv-d00016-js-integration.md,sha256=wofQ4qkCCILpjzFTtAKIwL7FB47KGoPpW9ox2k-BQ7c,1658
|
|
95
|
+
elspais/trace_view/specs/tv-p00001-html-generator.md,sha256=tv4cP0CynaRPxHKTzGN3r9CXqQBbioVX2ESOcOBKnUI,1792
|
|
96
|
+
elspais/trace_view/specs/tv-p00002-review-system.md,sha256=JQJSwNbZ_Hkqk43QQ9JKKhTBsfI0rF1Hp_3RIR6hS-4,1609
|
|
97
|
+
elspais-0.11.1.dist-info/METADATA,sha256=ysGy8f5kiNLFOeqFbL5EM9Z73OO3-scXK9OqlAQhvoE,11634
|
|
98
|
+
elspais-0.11.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
99
|
+
elspais-0.11.1.dist-info/entry_points.txt,sha256=yWZZEfn2fBSKSzGoS-fMQ9YoTkyeu6-i7Oht6NsdKpk,45
|
|
100
|
+
elspais-0.11.1.dist-info/licenses/LICENSE,sha256=x_dNMsy_askp2MmKXZFL2bKW_tDiJHcRTyAg0TY1RMI,1063
|
|
101
|
+
elspais-0.11.1.dist-info/RECORD,,
|
elspais-0.9.3.dist-info/RECORD
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
elspais/__init__.py,sha256=grQHU0RmRQChHUEb_cH_OuGmxADj5fDSNNayhXEQco4,1014
|
|
2
|
-
elspais/__main__.py,sha256=rCMaObqJeT_6dhyfND7S4dh_lv30j7Ww3Z7992YYwaE,130
|
|
3
|
-
elspais/cli.py,sha256=krVJcjCVXAuxniRWFPIIjBd7znQSD6egrJIN2YWuHYQ,14770
|
|
4
|
-
elspais/commands/__init__.py,sha256=jS7ry2ez7xri-fUlYUw9fGKJi5yTHtVN4PU8voHjgLI,155
|
|
5
|
-
elspais/commands/analyze.py,sha256=5hE6YRL8AoAz2ukkR1rj6aiD2TNJi63UHYVJXmKoOUs,7135
|
|
6
|
-
elspais/commands/changed.py,sha256=H0v95I6eXqcYXfqIUHKb3rP_2jMiH52bkXMe0TXM6y8,4872
|
|
7
|
-
elspais/commands/config_cmd.py,sha256=KnH7vISH4041rqQrFftgffYLIujmIllZ_NCl5hIvCnE,13943
|
|
8
|
-
elspais/commands/edit.py,sha256=Ey42VCAsV2G1WzCZ3qy1IAoG88zeba3O0iZjiodJZZA,16054
|
|
9
|
-
elspais/commands/hash_cmd.py,sha256=pPKvhS99Nb-AEO5JrLUJQNQbXkfCJ0vVQE_L8PZW5NQ,5686
|
|
10
|
-
elspais/commands/index.py,sha256=_jPGt_LnGI6gGJLonzOoM978YpTj14GWDCCemtSIah4,5283
|
|
11
|
-
elspais/commands/init.py,sha256=y2vxR5pvd0gmONJYjX3GtGbMfmJU11k_zRKWCm7O6Qo,3870
|
|
12
|
-
elspais/commands/rules_cmd.py,sha256=b2d0l-rn-WTd6ULJWsjAebBTcKv_yndO7pVNc29QEoo,3415
|
|
13
|
-
elspais/commands/trace.py,sha256=xXpXD_ZDsr2B0YA342V4RJpV0zeRrq_l-gxwvO8NKHo,7651
|
|
14
|
-
elspais/commands/validate.py,sha256=dIjDUU3zKfgnVB9rFggGr6_W9i1X6NVqRhfWoTkP7f0,14346
|
|
15
|
-
elspais/config/__init__.py,sha256=NkQEonHWWiXXCDrfehOCrsEYSuhj75KYj8oBQ7FuS4c,292
|
|
16
|
-
elspais/config/defaults.py,sha256=6GddebKwrDAiTp0tGzkNSEuGM_HeA846o8CQPYS4yz8,5177
|
|
17
|
-
elspais/config/loader.py,sha256=MnG_j2W1pOSRTTUHAOvu5xcJUAzDFNPvRjloFXpM15w,13827
|
|
18
|
-
elspais/core/__init__.py,sha256=OTQ1TOf7iLN4czmlkrV5tiaxpAat0VcrWpxYbfonAys,576
|
|
19
|
-
elspais/core/content_rules.py,sha256=4UoA_SUJK5R2MG9NE0Z8sNzMVPq3beEJGKEtX_NAeTk,4515
|
|
20
|
-
elspais/core/git.py,sha256=oM0jQUuqdMYc95j2Q1xqEH8a3X33u0Xe57TsTDUrhH4,11213
|
|
21
|
-
elspais/core/hasher.py,sha256=X3Ry_M6zgs2pZPZ3UFItlvM0mRW6aPS0SKPhCYeaFUE,4259
|
|
22
|
-
elspais/core/models.py,sha256=G08Yg9_69SSrdfGCgZJmya6DESiCijS2Y228q32m0l8,9558
|
|
23
|
-
elspais/core/parser.py,sha256=LlureFW9dbpf26VsSF8yP7IvHcZC4zaJ_YPWgqx9sdc,22140
|
|
24
|
-
elspais/core/patterns.py,sha256=wEkzIjBRDDFyR3LZ-Lbm0a2IaU6Pdi80a9UUqb_S_aQ,13082
|
|
25
|
-
elspais/core/rules.py,sha256=WIn41JupkZannGgEfhqK__aomsJVU9aqpq__s2ZpZgU,19036
|
|
26
|
-
elspais/mcp/__init__.py,sha256=5yYWJpYkRu8AyJHUkbIP1HVngdyGEygzonJjdypAKb0,1143
|
|
27
|
-
elspais/mcp/__main__.py,sha256=oqpwTiE14vr5AGnP0MxRzILx_hYqonUMMK96dX-EXVw,134
|
|
28
|
-
elspais/mcp/context.py,sha256=MmYsDFA6nEVmgRffCQlqJMQjI0joQQJh1tFFPEeUeCA,5538
|
|
29
|
-
elspais/mcp/serializers.py,sha256=FuSJT_Qg5BTQEwdER0G7ES2IJYZw7mDqyQqQIZ6_3FA,2832
|
|
30
|
-
elspais/mcp/server.py,sha256=tgmeodGIqzz3vvGunDI6NhY0avQKn0F0yOiF7sbjJ-I,10416
|
|
31
|
-
elspais/testing/__init__.py,sha256=hJB3V28HoeZUnIexi2mkaBwo0bQ7uSxBs-IZmcmpFtQ,879
|
|
32
|
-
elspais/testing/config.py,sha256=PQkrnuk_p8pObc-Nio3s3mIKLO4AfB-2eiwXruXTw0Y,1620
|
|
33
|
-
elspais/testing/mapper.py,sha256=EGund_KgeYbAnWRRcnuVs0xCzlf7EvJ-qiluSmvRIso,5649
|
|
34
|
-
elspais/testing/result_parser.py,sha256=u-TI5oytCqxz769AyU7WF9mOOULSzZAArvBg6JXwG1Q,9280
|
|
35
|
-
elspais/testing/scanner.py,sha256=PEn0qJCE2eX2SCru3Cc-v18mf81q7BNkPYE-MZ3m8CM,7037
|
|
36
|
-
elspais-0.9.3.dist-info/METADATA,sha256=Le09mH3JQg_AZEPTcI5fmmIGpawHRp6IrZOOfAvffno,10642
|
|
37
|
-
elspais-0.9.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
38
|
-
elspais-0.9.3.dist-info/entry_points.txt,sha256=yWZZEfn2fBSKSzGoS-fMQ9YoTkyeu6-i7Oht6NsdKpk,45
|
|
39
|
-
elspais-0.9.3.dist-info/licenses/LICENSE,sha256=x_dNMsy_askp2MmKXZFL2bKW_tDiJHcRTyAg0TY1RMI,1063
|
|
40
|
-
elspais-0.9.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|