Skip to main content

Semantic compiler: Code → AST → CQRS Model → Workflow DAG → Proto/Schema

Project description

code2schema

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • 🤖 LLM usage: $0.4500 (3 commits)
  • 👤 Human dev: ~$350 (3.5h @ $100/h, 30min dedup)

Generated on 2026-05-07 using openrouter/qwen/qwen3-coder-next


Semantic Compiler for Software Systems

Przekształca kod Python w model semantyczny CQRS → kontrakty API → graf architektury.

CODE (.py)
  ⬇  AST extraction (built-in ast)
  ⬇  CQRS inference (Query / Command / Orchestrator)
  ⬇  Call Graph (NetworkX)
  ⬇  Event Model (DDD / Event Sourcing)
  ⬇  Workflow DAG
  ⬇  Quality Rules
  ↓
JSON schema · .proto · Markdown · GraphML · DOT

Instalacja

pip install code2schema

Opcjonalne backendy:

pip install "code2schema[proto]"   # grpcio-tools → kompilacja .proto
pip install "code2schema[neo4j]"   # eksport do bazy grafowej
pip install "code2schema[viz]"     # pyvis → wizualizacja HTML
pip install "code2schema[dev]"     # pytest + ruff + black

Szybki start

# Analiza z auto-generowanymi nazwami plików (w katalogu bieżącym)
code2schema /home/tom/github/maskservice/c2004/backend
# → c2004_schema.json

# Pełna analiza ze wszystkimi formatami wyjściowymi
code2schema ./backend --proto --md --html
# → backend_schema.json
# → backend_api.proto
# → backend_report.md
# → backend_viz.html

# Pełna analiza ze szczegółami
code2schema ./backend --proto --md --html --graph-summary --events --cycles

Przykładowy output:

✅ Gotowe (1.8s)
   Modules  : 607
   Functions: 3142
   Queries  : 1518
   Commands : 505
   Orchest. : 1119
   Workflows: 1118
   Rules    : 320
   Graph    : 2922N / 5612E
   → c2004_schema.json
   → c2004_api.proto
   → c2004_report.md

Test na dużym projekcie (c2004 backend)

Analiza produkcyjnego projektu IoT (607 modułów, 3142 funkcje):

code2schema /home/tom/github/maskservice/c2004/backend --proto --md --html
# Pliki generowane w /home/tom/github/maskservice/c2004/ (katalog projektu)

Wyniki:

✅ Gotowe (1.8s)
   Modules  : 607
   Functions: 3142
   Queries  : 1518
   Commands : 505
   Orchest. : 1119
   Workflows: 1118
   Rules    : 320
   Graph    : 2922N / 5612E
   → c2004_schema.json
   → c2004_api.proto
   → c2004_report.md
   → c2004_viz.html

Dokumentacja i przykłady

Wykryte cykle w architekturze CQRS (do refaktoryzacji):

  • handle → publish → _execute → publish → handle

Wygenerowane artefakty:

  • c2004_schema.json (2.9MB) — pełny model
  • c2004_api.proto (188KB) — gRPC contracts
  • c2004_report.md (49KB) — podsumowanie jakości
  • c2004_viz.html (1.1MB) — interaktywny graf D3.js z wyszukiwaniem i filtrowaniem

Użycie w kodzie

from code2schema import extract_project, analyze
from code2schema.analyzer.graph import build_rich_graph, graph_summary
from code2schema.analyzer.events import infer_event_model
from code2schema.codegen import to_proto, to_markdown
from pathlib import Path

# Ekstrakcja + analiza
modules = extract_project(Path("./backend"))
schema  = analyze(modules)

# CQRS
print(f"Queries:      {len(schema.queries())}")
print(f"Commands:     {len(schema.commands())}")
print(f"Orchestrators:{len(schema.orchestrators())}")

# Graf
G = build_rich_graph(schema)
print(graph_summary(G, schema))

# Event Model (DDD)
em = infer_event_model(modules)
print(em.summary())

# Eksport
print(to_proto(schema))
print(to_markdown(schema))

Wizualizacja HTML (--html)

Interaktywny graf D3.js z funkcjami:

  • Kolory ról: 🟢 Query, 🟠 Command, 🟣 Orchestrator
  • Wyszukiwanie — filtruje węzły w czasie rzeczywistym
  • Hover — podświetla połączenia (call graph)
  • Klik — szczegóły funkcji (fan-out, side effects, reguły jakości)
  • Filtry — pokazuj/ukrywaj kategorie ról
  • Force layout — przeciąganie węzłów
code2schema ./backend --html viz.html
# Otwórz w przeglądarce: open viz.html

Architektura paczki

code2schema/
├── core/
│   ├── models.py       # IR: FunctionIR, ModuleIR, SchemaIR (Pydantic)
│   └── extractor.py    # AST parser (stdlib ast, bez zależności)
├── analyzer/
│   ├── cqrs.py         # CQRS inference + WorkflowDAG + Rules
│   ├── graph.py        # NetworkX: centrality, hubs, cycles, GraphML/DOT
│   └── events.py       # DDD / Event Sourcing inference
├── codegen/
│   └── __init__.py     # JSON, .proto, Markdown generators
└── cli.py              # entry point: code2schema <path> [flags]

Klasy CQRS

Rola Kryterium
query brak side-effectów, fan-out = 0
command side-effects (IO, network, DB)
orchestrator fan-out ≥ 5 (wywołuje wiele funkcji)

Reguły jakości

Automatycznie generowane:

ID Warunek Akcja
HIGH_FAN_OUT fan-out ≥ 10 refactor_to_service
LONG_FUNCTION lines > 100 split_function
QUERY_WITH_SIDE_EFFECTS query + IO separate_command_from_query

Graph export

GraphML można otworzyć w Gephi, yEd lub zaimportować do Neo4j.
DOT renderuje Graphviz: dot -Tsvg graph.dot -o graph.svg

Biblioteki

Kategoria Biblioteka Po co
Parsing ast (stdlib) Parsowanie Python bez zależności
Parsing libcst Modyfikacja kodu z zachowaniem formatowania
Parsing tree-sitter Multi-language (Go, TS, Rust) — v4
Graf networkx Call graph, centrality, cykle
Graf neo4j Eksport do bazy grafowej
Wizualizacja pyvis Interaktywny HTML
Schema pydantic IR models + walidacja
Proto grpcio-tools Kompilacja .proto → kod

Roadmap

  • v0.1 — AST extraction, CQRS inference, JSON/Proto/MD output
  • v0.1 — NetworkX call graph, GraphML/DOT export, PageRank
  • v0.1 — Event Model (DDD), layer violation detection
  • v0.2 — libcst extractor (zachowanie formatowania, transformacje)
  • v0.2 — tree-sitter multi-language (Go, TypeScript, Rust)
  • v0.3 — Neo4j export, pyvis HTML visualization
  • v0.3 — Cross-language code generator (proto → Go/TS stubs)
  • v0.4 — Data Flow Graph (DFG), State model extraction

Licencja

MIT

License

Licensed under Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code2schema-0.1.4.tar.gz (29.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

code2schema-0.1.4-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file code2schema-0.1.4.tar.gz.

File metadata

  • Download URL: code2schema-0.1.4.tar.gz
  • Upload date:
  • Size: 29.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for code2schema-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f25250221cb5bb42bba89a803553a4bbf894aefac348f0f49716480983361f9f
MD5 b21cc4de0c8a204e7d5d7e700a776d32
BLAKE2b-256 909da0e9ec6b43d175578789faf3c074fdc0a24ea35cbb963a3e4bd6e1d6fb13

See more details on using hashes here.

File details

Details for the file code2schema-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: code2schema-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for code2schema-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e7644e5d868f86577d8c68aa7e1adfd40c5f1a1744a2e113f05e5167eb83f87f
MD5 f6239e1cb997370690cbff74e91ede22
BLAKE2b-256 71a8485f533108a34b580cf465674ab22c054c0e2025ac81b3c007f8d2c2fe28

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page