Перейти к содержанию

Module dependency graph — auto-layer🔗

Generated from the code by tach. Do not hand-edit the fenced block below — regenerate it (see footer). This is the Reference layer (Living Documentation): it cannot lie about imports because it is derived from them.

The graph shows the 12 top-level packages of polit_media_radar and their real import dependencies. An arrow A --> B means package A imports from package B. (logging_config is a single .py file, not a package, so it is not a node.)

graph TD
    polit_media_radar.alerts --> polit_media_radar.config
    polit_media_radar.alerts --> polit_media_radar.security
    polit_media_radar.cli --> polit_media_radar.alerts
    polit_media_radar.cli --> polit_media_radar.config
    polit_media_radar.cli --> polit_media_radar.domain
    polit_media_radar.cli --> polit_media_radar.infrastructure
    polit_media_radar.cli --> polit_media_radar.ingestion
    polit_media_radar.cli --> polit_media_radar.persistence
    polit_media_radar.cli --> polit_media_radar.reports
    polit_media_radar.cli --> polit_media_radar.scheduler
    polit_media_radar.cli --> polit_media_radar.security
    polit_media_radar.cli --> polit_media_radar.services
    polit_media_radar.cli --> polit_media_radar.sources
    polit_media_radar.infrastructure --> polit_media_radar.domain
    polit_media_radar.infrastructure --> polit_media_radar.ingestion
    polit_media_radar.infrastructure --> polit_media_radar.persistence
    polit_media_radar.infrastructure --> polit_media_radar.security
    polit_media_radar.infrastructure --> polit_media_radar.sources
    polit_media_radar.ingestion --> polit_media_radar.alerts
    polit_media_radar.ingestion --> polit_media_radar.domain
    polit_media_radar.ingestion --> polit_media_radar.persistence
    polit_media_radar.ingestion --> polit_media_radar.security
    polit_media_radar.ingestion --> polit_media_radar.sources
    polit_media_radar.persistence --> polit_media_radar.config
    polit_media_radar.persistence --> polit_media_radar.domain
    polit_media_radar.persistence --> polit_media_radar.security
    polit_media_radar.persistence --> polit_media_radar.sources
    polit_media_radar.reports --> polit_media_radar.alerts
    polit_media_radar.reports --> polit_media_radar.config
    polit_media_radar.reports --> polit_media_radar.domain
    polit_media_radar.reports --> polit_media_radar.persistence
    polit_media_radar.reports --> polit_media_radar.security
    polit_media_radar.reports --> polit_media_radar.services
    polit_media_radar.reports --> polit_media_radar.sources
    polit_media_radar.scheduler --> polit_media_radar.alerts
    polit_media_radar.scheduler --> polit_media_radar.cli
    polit_media_radar.scheduler --> polit_media_radar.config
    polit_media_radar.scheduler --> polit_media_radar.domain
    polit_media_radar.scheduler --> polit_media_radar.security
    polit_media_radar.scheduler --> polit_media_radar.sources
    polit_media_radar.services --> polit_media_radar.domain
    polit_media_radar.services --> polit_media_radar.persistence
    polit_media_radar.services --> polit_media_radar.reports
    polit_media_radar.sources --> polit_media_radar.alerts
    polit_media_radar.sources --> polit_media_radar.config
    polit_media_radar.sources --> polit_media_radar.domain
    polit_media_radar.sources --> polit_media_radar.security
    polit_media_radar.config
    polit_media_radar.domain
    polit_media_radar.security

Reading the graph. domain, security, config are leaf/utility layers (no outgoing arrows — nothing under polit_media_radar they depend on). cli is the composition root (depends on nearly everything). Note the cli ↔ scheduler cycle: scheduler imports cli and cli imports scheduler — a real (not introduced) coupling, surfaced honestly rather than hidden.


Regenerate: from repo root, tach sync && tach show --mermaid -o docs/architecture/diagrams/modules.md then re-wrap with this header. Config: tach.toml (repo root). Drift gate: tach show --mermaid - compared against the fenced block.