sumd 0.3.26__tar.gz → 0.3.28__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 (35) hide show
  1. {sumd-0.3.26 → sumd-0.3.28}/CHANGELOG.md +31 -0
  2. {sumd-0.3.26 → sumd-0.3.28}/PKG-INFO +6 -6
  3. {sumd-0.3.26 → sumd-0.3.28}/README.md +5 -5
  4. {sumd-0.3.26 → sumd-0.3.28}/pyproject.toml +1 -1
  5. {sumd-0.3.26 → sumd-0.3.28}/sumd/__init__.py +2 -2
  6. sumd-0.3.28/sumd/models.py +45 -0
  7. {sumd-0.3.26 → sumd-0.3.28}/sumd/parser.py +2 -40
  8. {sumd-0.3.26 → sumd-0.3.28}/.gitignore +0 -0
  9. {sumd-0.3.26 → sumd-0.3.28}/LICENSE +0 -0
  10. {sumd-0.3.26 → sumd-0.3.28}/sumd/cli.py +0 -0
  11. {sumd-0.3.26 → sumd-0.3.28}/sumd/extractor.py +0 -0
  12. {sumd-0.3.26 → sumd-0.3.28}/sumd/generator.py +0 -0
  13. {sumd-0.3.26 → sumd-0.3.28}/sumd/mcp_server.py +0 -0
  14. {sumd-0.3.26 → sumd-0.3.28}/sumd/pipeline.py +0 -0
  15. {sumd-0.3.26 → sumd-0.3.28}/sumd/renderer.py +0 -0
  16. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/__init__.py +0 -0
  17. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/api_stubs.py +0 -0
  18. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/architecture.py +0 -0
  19. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/base.py +0 -0
  20. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/call_graph.py +0 -0
  21. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/code_analysis.py +0 -0
  22. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/configuration.py +0 -0
  23. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/dependencies.py +0 -0
  24. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/deployment.py +0 -0
  25. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/environment.py +0 -0
  26. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/extras.py +0 -0
  27. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/interfaces.py +0 -0
  28. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/metadata.py +0 -0
  29. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/quality.py +0 -0
  30. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/refactor_analysis.py +0 -0
  31. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/source_snippets.py +0 -0
  32. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/test_contracts.py +0 -0
  33. {sumd-0.3.26 → sumd-0.3.28}/sumd/sections/workflows.py +0 -0
  34. {sumd-0.3.26 → sumd-0.3.28}/sumd/toon_parser.py +0 -0
  35. {sumd-0.3.26 → sumd-0.3.28}/sumd/validator.py +0 -0
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.28] - 2026-04-23
11
+
12
+ ### Docs
13
+ - Update README.md
14
+
15
+ ### Other
16
+ - Update sumd/__init__.py
17
+ - Update sumd/models.py
18
+ - Update sumd/parser.py
19
+
20
+ ## [0.3.27] - 2026-04-23
21
+
22
+ ### Docs
23
+ - Update README.md
24
+ - Update docs/README.md
25
+ - Update project/README.md
26
+ - Update project/context.md
27
+
28
+ ### Other
29
+ - Update project/analysis.toon.yaml
30
+ - Update project/calls.mmd
31
+ - Update project/calls.png
32
+ - Update project/calls.toon.yaml
33
+ - Update project/calls.yaml
34
+ - Update project/compact_flow.mmd
35
+ - Update project/compact_flow.png
36
+ - Update project/duplication.toon.yaml
37
+ - Update project/evolution.toon.yaml
38
+ - Update project/flow.mmd
39
+ - ... and 8 more files
40
+
10
41
  ## [0.3.26] - 2026-04-23
11
42
 
12
43
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sumd
3
- Version: 0.3.26
3
+ Version: 0.3.28
4
4
  Summary: SUMD - Structured Unified Markdown Descriptor for AI-aware project documentation
5
5
  Project-URL: Homepage, https://github.com/tom/statement
6
6
  Project-URL: Repository, https://github.com/tom/statement
@@ -41,17 +41,17 @@ Description-Content-Type: text/markdown
41
41
 
42
42
  ## AI Cost Tracking
43
43
 
44
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.3.26-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
45
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-19.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
44
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.3.28-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
45
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-20.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
46
46
 
47
- - 🤖 **LLM usage:** $7.5000 (56 commits)
48
- - 👤 **Human dev:** ~$1971 (19.7h @ $100/h, 30min dedup)
47
+ - 🤖 **LLM usage:** $7.5000 (58 commits)
48
+ - 👤 **Human dev:** ~$2071 (20.7h @ $100/h, 30min dedup)
49
49
 
50
50
  Generated on 2026-04-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
51
51
 
52
52
  ---
53
53
 
54
- ![Version](https://img.shields.io/badge/version-0.3.26-blue) ![Python](https://img.shields.io/badge/python-3.10+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
54
+ ![Version](https://img.shields.io/badge/version-0.3.28-blue) ![Python](https://img.shields.io/badge/python-3.10+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
55
55
 
56
56
  **SUMD** (Structured Unified Markdown Descriptor) is a semantic project descriptor format in Markdown.
57
57
  It defines intent, structure, execution entry points, and the mental model of a system for both humans and LLMs.
@@ -3,17 +3,17 @@
3
3
 
4
4
  ## AI Cost Tracking
5
5
 
6
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.3.26-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-19.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
6
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.3.28-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-20.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
8
8
 
9
- - 🤖 **LLM usage:** $7.5000 (56 commits)
10
- - 👤 **Human dev:** ~$1971 (19.7h @ $100/h, 30min dedup)
9
+ - 🤖 **LLM usage:** $7.5000 (58 commits)
10
+ - 👤 **Human dev:** ~$2071 (20.7h @ $100/h, 30min dedup)
11
11
 
12
12
  Generated on 2026-04-23 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
13
13
 
14
14
  ---
15
15
 
16
- ![Version](https://img.shields.io/badge/version-0.3.26-blue) ![Python](https://img.shields.io/badge/python-3.10+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
16
+ ![Version](https://img.shields.io/badge/version-0.3.28-blue) ![Python](https://img.shields.io/badge/python-3.10+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
17
17
 
18
18
  **SUMD** (Structured Unified Markdown Descriptor) is a semantic project descriptor format in Markdown.
19
19
  It defines intent, structure, execution entry points, and the mental model of a system for both humans and LLMs.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sumd"
7
- version = "0.3.26"
7
+ version = "0.3.28"
8
8
  description = "SUMD - Structured Unified Markdown Descriptor for AI-aware project documentation"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -4,10 +4,10 @@ SUMD is a semantic project descriptor format in Markdown that defines intent,
4
4
  structure, execution entry points, and mental model of a system for both humans and LLMs.
5
5
  """
6
6
 
7
- __version__ = "0.3.26"
7
+ __version__ = "0.3.28"
8
8
 
9
+ from sumd.models import SUMDDocument
9
10
  from sumd.parser import (
10
- SUMDDocument,
11
11
  SUMDParser,
12
12
  parse,
13
13
  parse_file,
@@ -0,0 +1,45 @@
1
+ """SUMD data models — SectionType, Section, SUMDDocument."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass, field
6
+ from enum import Enum
7
+ from typing import Any, Dict, List
8
+
9
+
10
+ class SectionType(Enum):
11
+ """SUMD section types."""
12
+
13
+ PROJECT_HEADER = "project_header"
14
+ METADATA = "metadata"
15
+ INTENT = "intent"
16
+ ARCHITECTURE = "architecture"
17
+ INTERFACES = "interfaces"
18
+ WORKFLOWS = "workflows"
19
+ CONFIGURATION = "configuration"
20
+ DEPENDENCIES = "dependencies"
21
+ DEPLOYMENT = "deployment"
22
+ UNKNOWN = "unknown"
23
+
24
+
25
+ @dataclass
26
+ class Section:
27
+ """Represents a SUMD section."""
28
+
29
+ name: str
30
+ type: SectionType
31
+ content: str
32
+ level: int
33
+ subsections: List["Section"] = field(default_factory=list)
34
+ metadata: Dict[str, Any] = field(default_factory=dict)
35
+
36
+
37
+ @dataclass
38
+ class SUMDDocument:
39
+ """Represents a parsed SUMD document."""
40
+
41
+ project_name: str
42
+ description: str
43
+ sections: List[Section] = field(default_factory=list)
44
+ metadata: Dict[str, Any] = field(default_factory=dict)
45
+ raw_content: str = ""
@@ -1,48 +1,10 @@
1
1
  """SUMD Parser - Parse and validate SUMD markdown documents."""
2
2
 
3
3
  import re
4
- from dataclasses import dataclass, field
5
- from enum import Enum
6
4
  from pathlib import Path
7
- from typing import Any, Dict, List, Optional
5
+ from typing import List, Optional
8
6
 
9
-
10
- class SectionType(Enum):
11
- """SUMD section types."""
12
-
13
- PROJECT_HEADER = "project_header"
14
- METADATA = "metadata"
15
- INTENT = "intent"
16
- ARCHITECTURE = "architecture"
17
- INTERFACES = "interfaces"
18
- WORKFLOWS = "workflows"
19
- CONFIGURATION = "configuration"
20
- DEPENDENCIES = "dependencies"
21
- DEPLOYMENT = "deployment"
22
- UNKNOWN = "unknown"
23
-
24
-
25
- @dataclass
26
- class Section:
27
- """Represents a SUMD section."""
28
-
29
- name: str
30
- type: SectionType
31
- content: str
32
- level: int
33
- subsections: List["Section"] = field(default_factory=list)
34
- metadata: Dict[str, Any] = field(default_factory=dict)
35
-
36
-
37
- @dataclass
38
- class SUMDDocument:
39
- """Represents a parsed SUMD document."""
40
-
41
- project_name: str
42
- description: str
43
- sections: List[Section] = field(default_factory=list)
44
- metadata: Dict[str, Any] = field(default_factory=dict)
45
- raw_content: str = ""
7
+ from sumd.models import SUMDDocument, Section, SectionType
46
8
 
47
9
 
48
10
  class SUMDParser:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes