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