elspais 0.11.1__py3-none-any.whl → 0.11.2__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/__init__.py +1 -1
- elspais/cli.py +29 -10
- elspais/commands/analyze.py +5 -6
- elspais/commands/changed.py +2 -6
- elspais/commands/config_cmd.py +4 -4
- elspais/commands/edit.py +32 -36
- elspais/commands/hash_cmd.py +24 -18
- elspais/commands/index.py +8 -7
- elspais/commands/init.py +4 -4
- elspais/commands/reformat_cmd.py +32 -43
- elspais/commands/rules_cmd.py +6 -2
- elspais/commands/trace.py +23 -19
- elspais/commands/validate.py +8 -10
- elspais/config/defaults.py +7 -1
- elspais/core/content_rules.py +0 -1
- elspais/core/git.py +4 -10
- elspais/core/parser.py +55 -56
- elspais/core/patterns.py +2 -6
- elspais/core/rules.py +10 -15
- elspais/mcp/__init__.py +2 -0
- elspais/mcp/context.py +1 -0
- elspais/mcp/serializers.py +1 -1
- elspais/mcp/server.py +54 -39
- elspais/reformat/__init__.py +13 -13
- elspais/reformat/detector.py +9 -16
- elspais/reformat/hierarchy.py +8 -7
- elspais/reformat/line_breaks.py +36 -38
- elspais/reformat/prompts.py +22 -12
- elspais/reformat/transformer.py +43 -41
- elspais/sponsors/__init__.py +0 -2
- elspais/testing/__init__.py +1 -1
- elspais/testing/result_parser.py +25 -21
- elspais/trace_view/__init__.py +4 -3
- elspais/trace_view/coverage.py +5 -5
- elspais/trace_view/generators/__init__.py +1 -1
- elspais/trace_view/generators/base.py +17 -12
- elspais/trace_view/generators/csv.py +2 -6
- elspais/trace_view/generators/markdown.py +3 -8
- elspais/trace_view/html/__init__.py +4 -2
- elspais/trace_view/html/generator.py +423 -289
- elspais/trace_view/models.py +25 -0
- elspais/trace_view/review/__init__.py +21 -18
- elspais/trace_view/review/branches.py +114 -121
- elspais/trace_view/review/models.py +232 -237
- elspais/trace_view/review/position.py +53 -71
- elspais/trace_view/review/server.py +264 -288
- elspais/trace_view/review/status.py +43 -58
- elspais/trace_view/review/storage.py +48 -72
- {elspais-0.11.1.dist-info → elspais-0.11.2.dist-info}/METADATA +1 -1
- {elspais-0.11.1.dist-info → elspais-0.11.2.dist-info}/RECORD +53 -53
- {elspais-0.11.1.dist-info → elspais-0.11.2.dist-info}/WHEEL +0 -0
- {elspais-0.11.1.dist-info → elspais-0.11.2.dist-info}/entry_points.txt +0 -0
- {elspais-0.11.1.dist-info → elspais-0.11.2.dist-info}/licenses/LICENSE +0 -0
elspais/trace_view/models.py
CHANGED
|
@@ -135,6 +135,31 @@ class TraceViewRequirement:
|
|
|
135
135
|
def conflict_with(self) -> str:
|
|
136
136
|
return self.core.conflict_with
|
|
137
137
|
|
|
138
|
+
@property
|
|
139
|
+
def is_cycle(self) -> bool:
|
|
140
|
+
"""Check if requirement is part of a circular dependency.
|
|
141
|
+
|
|
142
|
+
Note: Cycle detection happens during validation. This property
|
|
143
|
+
defaults to False unless explicitly set via cycle_info.
|
|
144
|
+
"""
|
|
145
|
+
return getattr(self, "_is_cycle", False)
|
|
146
|
+
|
|
147
|
+
@is_cycle.setter
|
|
148
|
+
def is_cycle(self, value: bool) -> None:
|
|
149
|
+
self._is_cycle = value
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def cycle_path(self) -> str:
|
|
153
|
+
"""Get the cycle path if this requirement is part of a cycle.
|
|
154
|
+
|
|
155
|
+
Returns empty string if not in a cycle.
|
|
156
|
+
"""
|
|
157
|
+
return getattr(self, "_cycle_path", "")
|
|
158
|
+
|
|
159
|
+
@cycle_path.setter
|
|
160
|
+
def cycle_path(self, value: str) -> None:
|
|
161
|
+
self._cycle_path = value
|
|
162
|
+
|
|
138
163
|
@property
|
|
139
164
|
def subdir(self) -> str:
|
|
140
165
|
return self.core.subdir
|
|
@@ -5,9 +5,27 @@ elspais.trace_view.review - Collaborative review system.
|
|
|
5
5
|
Requires: pip install elspais[trace-review]
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
# Models are always available (no flask dependency)
|
|
9
|
+
from elspais.trace_view.review.models import (
|
|
10
|
+
Approval,
|
|
11
|
+
ApprovalDecision,
|
|
12
|
+
Comment,
|
|
13
|
+
CommentPosition,
|
|
14
|
+
PositionType,
|
|
15
|
+
RequestState,
|
|
16
|
+
ReviewConfig,
|
|
17
|
+
ReviewFlag,
|
|
18
|
+
ReviewPackage,
|
|
19
|
+
ReviewSession,
|
|
20
|
+
StatusRequest,
|
|
21
|
+
Thread,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
8
25
|
def _check_flask():
|
|
9
26
|
try:
|
|
10
27
|
import flask # noqa: F401
|
|
28
|
+
|
|
11
29
|
return True
|
|
12
30
|
except ImportError:
|
|
13
31
|
return False
|
|
@@ -15,22 +33,6 @@ def _check_flask():
|
|
|
15
33
|
|
|
16
34
|
FLASK_AVAILABLE = _check_flask()
|
|
17
35
|
|
|
18
|
-
# Models are always available (no flask dependency)
|
|
19
|
-
from elspais.trace_view.review.models import (
|
|
20
|
-
Comment,
|
|
21
|
-
CommentPosition,
|
|
22
|
-
Thread,
|
|
23
|
-
ReviewFlag,
|
|
24
|
-
StatusRequest,
|
|
25
|
-
Approval,
|
|
26
|
-
ReviewSession,
|
|
27
|
-
ReviewConfig,
|
|
28
|
-
ReviewPackage,
|
|
29
|
-
PositionType,
|
|
30
|
-
RequestState,
|
|
31
|
-
ApprovalDecision,
|
|
32
|
-
)
|
|
33
|
-
|
|
34
36
|
__all__ = [
|
|
35
37
|
"FLASK_AVAILABLE",
|
|
36
38
|
# Models (always available)
|
|
@@ -50,11 +52,12 @@ __all__ = [
|
|
|
50
52
|
|
|
51
53
|
if FLASK_AVAILABLE:
|
|
52
54
|
from elspais.trace_view.review.server import create_app
|
|
55
|
+
|
|
53
56
|
__all__.append("create_app")
|
|
54
57
|
else:
|
|
58
|
+
|
|
55
59
|
def create_app(*args, **kwargs):
|
|
56
60
|
"""Placeholder when flask is not installed."""
|
|
57
61
|
raise ImportError(
|
|
58
|
-
"Review server requires Flask. "
|
|
59
|
-
"Install with: pip install elspais[trace-review]"
|
|
62
|
+
"Review server requires Flask. " "Install with: pip install elspais[trace-review]"
|
|
60
63
|
)
|