Skip to content

Dependency graph

curfew's own first-party import graph, generated by curfew show --mermaid (scripts/gen_graph.py). It renders entirely client-side — the graph data stays local, consistent with curfew's no-upload principle.

flowchart LR
    n0["curfew"]
    n1["curfew.__main__"]
    n2["curfew.checks"]
    n3["curfew.checks.boundaries"]
    n4["curfew.checks.externals"]
    n5["curfew.checks.result"]
    n6["curfew.checks.runner"]
    n7["curfew.classify"]
    n8["curfew.classify.classifier"]
    n9["curfew.classify.distributions"]
    n10["curfew.classify.stdlib"]
    n11["curfew.cli"]
    n12["curfew.config"]
    n13["curfew.discovery"]
    n14["curfew.discovery.pyproject"]
    n15["curfew.discovery.source_root"]
    n16["curfew.discovery.workspace"]
    n17["curfew.errors"]
    n18["curfew.extraction"]
    n19["curfew.extraction.parser"]
    n20["curfew.extraction.path_to_module"]
    n21["curfew.extraction.relative"]
    n22["curfew.extraction.walker"]
    n23["curfew.graph"]
    n24["curfew.graph.algorithms"]
    n25["curfew.graph.build"]
    n26["curfew.matching"]
    n27["curfew.model"]
    n28["curfew.report"]
    n29["curfew.report._color"]
    n30["curfew.report.json_out"]
    n31["curfew.report.text"]
    n32["curfew.scaffold"]
    n33["curfew.viz"]
    n34["curfew.viz._view"]
    n35["curfew.viz.dot"]
    n36["curfew.viz.mermaid"]
    n0 --> n2
    n0 --> n12
    n0 --> n13
    n0 --> n23
    n1 --> n11
    n2 --> n3
    n2 --> n4
    n2 --> n5
    n2 --> n6
    n3 --> n26
    n3 --> n27
    n4 --> n9
    n4 --> n26
    n4 --> n27
    n5 --> n27
    n6 --> n3
    n6 --> n4
    n6 --> n5
    n6 --> n27
    n8 --> n9
    n8 --> n10
    n8 --> n27
    n11 --> n0
    n11 --> n6
    n11 --> n12
    n11 --> n17
    n11 --> n20
    n11 --> n23
    n11 --> n25
    n11 --> n26
    n11 --> n27
    n11 --> n29
    n11 --> n30
    n11 --> n31
    n11 --> n32
    n11 --> n35
    n11 --> n36
    n12 --> n9
    n12 --> n13
    n12 --> n14
    n12 --> n17
    n12 --> n26
    n12 --> n27
    n13 --> n9
    n13 --> n14
    n13 --> n15
    n13 --> n16
    n13 --> n17
    n13 --> n27
    n14 --> n9
    n14 --> n17
    n14 --> n27
    n16 --> n17
    n19 --> n27
    n20 --> n27
    n21 --> n27
    n23 --> n24
    n23 --> n25
    n24 --> n27
    n25 --> n8
    n25 --> n9
    n25 --> n17
    n25 --> n19
    n25 --> n20
    n25 --> n21
    n25 --> n22
    n25 --> n27
    n26 --> n27
    n28 --> n30
    n28 --> n31
    n30 --> n27
    n31 --> n27
    n31 --> n29
    n32 --> n27
    n33 --> n34
    n33 --> n35
    n33 --> n36
    n34 --> n27
    n35 --> n27
    n35 --> n34
    n36 --> n27
    n36 --> n34
    classDef first_party fill:#e8f0fe,stroke:#1a73e8,color:#202124
    class n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n33,n34,n35,n36 first_party