[{"data":1,"prerenderedAt":784},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fquickstart":135,"\u002Fdocs\u002Fquickstart-surround":779},[4],{"title":5,"path":6,"stem":7,"children":8,"page":134},"Docs","\u002Fdocs","docs",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130],{"title":10,"path":11,"stem":12},"AI harnesses: LLM tools, MCP servers and agents","\u002Fdocs\u002Fai-tools","docs\u002Fai-tools",{"title":14,"path":15,"stem":16},"Architecture","\u002Fdocs\u002Farchitecture","docs\u002Farchitecture",{"title":18,"path":19,"stem":20},"Web \u002F native bridges","\u002Fdocs\u002Fbridges","docs\u002Fbridges",{"title":22,"path":23,"stem":24},"Broadcast channels and tests","\u002Fdocs\u002Fchannels-and-tests","docs\u002Fchannels-and-tests",{"title":26,"path":27,"stem":28},"CLI reference","\u002Fdocs\u002Fcli","docs\u002Fcli",{"title":30,"path":31,"stem":32},"Completeness: how far an answer reaches","\u002Fdocs\u002Fcompleteness","docs\u002Fcompleteness",{"title":34,"path":35,"stem":36},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002Fconfiguration",{"title":38,"path":39,"stem":40},"External systems","\u002Fdocs\u002Fexternal","docs\u002Fexternal",{"title":42,"path":43,"stem":44},"Generated, copied and vendored files","\u002Fdocs\u002Fgenerated","docs\u002Fgenerated",{"title":46,"path":47,"stem":48},"Installing and updating cg","\u002Fdocs\u002Finstall","docs\u002Finstall",{"title":50,"path":51,"stem":52},"Java","\u002Fdocs\u002Fjava","docs\u002Fjava",{"title":54,"path":55,"stem":56},"Kotlin","\u002Fdocs\u002Fkotlin","docs\u002Fkotlin",{"title":58,"path":59,"stem":60},"Known limitations","\u002Fdocs\u002Flimitations","docs\u002Flimitations",{"title":62,"path":63,"stem":64,"children":65},"MCP server","\u002Fdocs\u002Fmcp","docs\u002Fmcp",[66],{"title":67,"path":68,"stem":69},"code-graph MCP: sample outputs (real calls via the MCP Python SDK stdio client)","\u002Fdocs\u002Fmcp\u002Fsample_outputs","docs\u002Fmcp\u002Fsample_outputs",{"title":71,"path":72,"stem":73},"Rust, C and C++","\u002Fdocs\u002Fnative","docs\u002Fnative",{"title":75,"path":76,"stem":77},"Port gaps: cg parity","\u002Fdocs\u002Fparity","docs\u002Fparity",{"title":79,"path":80,"stem":81},"PHP","\u002Fdocs\u002Fphp","docs\u002Fphp",{"title":83,"path":84,"stem":85},"Planned changes","\u002Fdocs\u002Fplans","docs\u002Fplans",{"title":87,"path":88,"stem":89},"Platform-specific code","\u002Fdocs\u002Fplatforms","docs\u002Fplatforms",{"title":91,"path":92,"stem":93},"Protocol links","\u002Fdocs\u002Fprotocols","docs\u002Fprotocols",{"title":95,"path":96,"stem":97},"Python","\u002Fdocs\u002Fpython","docs\u002Fpython",{"title":99,"path":100,"stem":101},"Quick start","\u002Fdocs\u002Fquickstart","docs\u002Fquickstart",{"title":103,"path":104,"stem":105},"Graph schema","\u002Fdocs\u002Fschema","docs\u002Fschema",{"title":107,"path":108,"stem":109},"Attack surface","\u002Fdocs\u002Fsurface","docs\u002Fsurface",{"title":111,"path":112,"stem":113},"Swift","\u002Fdocs\u002Fswift","docs\u002Fswift",{"title":115,"path":116,"stem":117},"TypeScript \u002F JavaScript frameworks","\u002Fdocs\u002Fts-frameworks","docs\u002Fts-frameworks",{"title":119,"path":120,"stem":121},"How we validate","\u002Fdocs\u002Fvalidation","docs\u002Fvalidation",{"title":123,"path":124,"stem":125},"Validation log","\u002Fdocs\u002Fvalidation-log","docs\u002Fvalidation-log",{"title":127,"path":128,"stem":129},"Value facts and resolutions","\u002Fdocs\u002Fvalue-facts","docs\u002Fvalue-facts",{"title":131,"path":132,"stem":133},"Visual view","\u002Fdocs\u002Fviz","docs\u002Fviz",false,{"id":136,"title":99,"body":137,"description":143,"extension":774,"meta":775,"navigation":776,"path":100,"seo":777,"stem":101,"__hash__":778},"docs\u002Fdocs\u002Fquickstart.md",{"type":138,"value":139,"toc":759},"minimark",[140,144,149,191,201,205,208,256,270,278,282,287,292,298,302,307,313,317,322,328,332,341,347,353,379,383,393,399,412,416,425,501,507,513,534,538,568,662,683,687,707,711,715,755],[141,142,143],"p",{},"Install cg, index a sample, ask four questions, and connect an agent. Python 3.11+.",[145,146,148],"h2",{"id":147},"install","Install",[150,151,156],"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-bash shiki shiki-themes cg-light cg-light cg-dark","pipx install cg-code-graph\n# or: uv tool install cg-code-graph\ncg doctor\n","bash","",[157,158,159,175,182],"code",{"__ignoreMap":155},[160,161,164,168,172],"span",{"class":162,"line":163},"line",1,[160,165,167],{"class":166},"sZJo5","pipx",[160,169,171],{"class":170},"sha9Y"," install",[160,173,174],{"class":170}," cg-code-graph\n",[160,176,178],{"class":162,"line":177},2,[160,179,181],{"class":180},"seS0s","# or: uv tool install cg-code-graph\n",[160,183,185,188],{"class":162,"line":184},3,[160,186,187],{"class":166},"cg",[160,189,190],{"class":170}," doctor\n",[141,192,193,196,197,200],{},[157,194,195],{},"cg doctor"," shows which languages index exact or heuristic on this machine. Other options: ",[198,199,148],"a",{"href":47},".",[145,202,204],{"id":203},"index-a-sample","Index a sample",[141,206,207],{},"The Django sample needs nothing but Python.",[150,209,211],{"className":152,"code":210,"language":154,"meta":155,"style":155},"git clone https:\u002F\u002Fgithub.com\u002Fcyberchronos00\u002Fcode-graph.git && cd code-graph\ncg index examples\u002Fbookstore-django --name bookstore-django --db out\u002Fapi.db\n",[157,212,213,234],{"__ignoreMap":155},[160,214,215,218,221,224,228,231],{"class":162,"line":163},[160,216,217],{"class":166},"git",[160,219,220],{"class":170}," clone",[160,222,223],{"class":170}," https:\u002F\u002Fgithub.com\u002Fcyberchronos00\u002Fcode-graph.git",[160,225,227],{"class":226},"sZ_TN"," &&",[160,229,230],{"class":166}," cd",[160,232,233],{"class":170}," code-graph\n",[160,235,236,238,241,244,247,250,253],{"class":162,"line":177},[160,237,187],{"class":166},[160,239,240],{"class":170}," index",[160,242,243],{"class":170}," examples\u002Fbookstore-django",[160,245,246],{"class":170}," --name",[160,248,249],{"class":170}," bookstore-django",[160,251,252],{"class":170}," --db",[160,254,255],{"class":170}," out\u002Fapi.db\n",[141,257,258,259,262,263,266,267,200],{},"Stdout is stats JSON (nodes\u002Fedges, plus ",[157,260,261],{},"starters",": queries that resolve in this graph). Stderr ends with coverage. ",[157,264,265],{},"out\u002F"," is created for you. For your own repo: ",[157,268,269],{},"cg index . --db out\u002Fgraph.db",[150,271,276],{"className":272,"code":274,"language":275,"meta":155},[273],"language-text","coverage: python 32 exact\n  frameworks: django, django-ninja, djangorestframework | presets: common, python, django, django-ninja, djangorestframework | config: no .cg.yaml\n","text",[157,277,274],{"__ignoreMap":155},[145,279,281],{"id":280},"ask-questions","Ask questions",[283,284,286],"h3",{"id":285},"what-reaches-a-table","What reaches a table",[141,288,289],{},[157,290,291],{},"cg reaches table:store_books --db out\u002Fapi.db",[150,293,296],{"className":294,"code":295,"language":275,"meta":155},[273],"targets: table:store_books -> 1 node(s): table:store_books\ndependents: 18 nodes  (code: 6, entry points: 9, other: 3)\n== RUNTIME (reached from http_route \u002F ... \u002F queue_job \u002F listener): 5 functions\u002Fmethods\n    catalog.api.create_book  depth=1 conf=resolved  http_route(1)\n        path: function:catalog.api.create_book\n          -WRITES_TABLE[resolved @ catalog\u002Fapi.py:27]-> table:store_books\n    catalog.signals.review_saved  depth=3 conf=resolved  listener(1)\n        path: function:catalog.signals.review_saved\n          -DISPATCHES[exact @ catalog\u002Fsignals.py:12]-> job:catalog.tasks.recompute_rating\n          -HANDLED_BY[exact @ catalog\u002Ftasks.py:13]-> function:catalog.tasks.recompute_rating\n          -READS_TABLE[resolved @ catalog\u002Ftasks.py:14]-> table:store_books\n",[157,297,295],{"__ignoreMap":155},[283,299,301],{"id":300},"who-writes-it","Who writes it",[141,303,304],{},[157,305,306],{},"cg writers store_books --db out\u002Fapi.db",[150,308,311],{"className":309,"code":310,"language":275,"meta":155},[273],"[catalog] catalog.admin.BookAdmin  WRITES_TABLE table:store_books  @catalog\u002Fadmin.py:6 (resolved)  entries: admin_panel\n[catalog] catalog.api.create_book  WRITES_TABLE table:store_books  @catalog\u002Fapi.py:27 (resolved)  entries: http_route\n[catalog\u002Fmanagement\u002Fcommands] catalog.management.commands.import_books.Command.handle  WRITES_TABLE table:store_books  @catalog\u002Fmanagement\u002Fcommands\u002Fimport_books.py:18 (resolved)  entries: management_command\n...\n7 write edges, 4 writers\n",[157,312,310],{"__ignoreMap":155},[283,314,316],{"id":315},"unguarded-routes-that-write","Unguarded routes that write",[141,318,319],{},[157,320,321],{},"cg routes --writes --unguarded --db out\u002Fapi.db",[150,323,326],{"className":324,"code":325,"language":275,"meta":155},[273],"routes reaching a write (any table): 2 of 19 routes | filter: no auth guard -> 1\nPOST \u002Fapi\u002Fbooks\u002F  @catalog\u002Fapi.py:25  NO AUTH\n    guards: (none)\n    writes store_books via catalog.api.create_book conf=resolved  ROUTES_TO@api.py:25 → WRITES_TABLE@api.py:27~r → table:store_books\n",[157,327,325],{"__ignoreMap":155},[283,329,331],{"id":330},"impact-of-a-change-and-its-source","Impact of a change, and its source",[141,333,334,337,338],{},[157,335,336],{},"cg impact catalog.api.create_book --db out\u002Fapi.db"," then ",[157,339,340],{},"cg snippet catalog.api.create_book --db out\u002Fapi.db",[150,342,345],{"className":343,"code":344,"language":275,"meta":155},[273],"callers (transitive): 0\nentry points: 1\n  http_route       POST \u002Fapi\u002Fbooks\u002F  conf=exact\n        path: route:POST \u002Fapi\u002Fbooks\u002F\n          -ROUTES_TO[exact @ catalog\u002Fapi.py:25]-> function:catalog.api.create_book\n",[157,346,344],{"__ignoreMap":155},[150,348,351],{"className":349,"code":350,"language":275,"meta":155},[273],"catalog\u002Fapi.py:26-28\n26| def create_book(request, payload: BookIn):\n27|     book = Book.objects.create(**payload.dict())\n28|     return 201, book\n",[157,352,350],{"__ignoreMap":155},[141,354,355,356,359,360,363,364,367,368,371,372,374,375,200],{},"Every edge carries ",[157,357,358],{},"exact",", ",[157,361,362],{},"resolved"," or ",[157,365,366],{},"heuristic",". ",[157,369,370],{},"--min-confidence resolved"," hides guesses. See ",[198,373,26],{"href":27}," and ",[198,376,378],{"href":377},"\u002Fdocs\u002Fcli#query-targets-specs","Query targets (specs)",[283,380,382],{"id":381},"tests-a-change-affects","Tests a change affects",[141,384,385,388,389,392],{},[157,386,387],{},"cg affected catalog\u002Fapi.py --db out\u002Fapi.db"," on that index (",[157,390,391],{},"cg index examples\u002Fbookstore-django --name bookstore-django --db out\u002Fapi.db","):",[150,394,397],{"className":395,"code":396,"language":275,"meta":155},[273],"changed: 1 file, 12 symbols\nM catalog\u002Fapi.py  12 symbols\n\ntests: 3 (3 direct, 0 transitive, 0 UI, 0 changed) in 1 file\ncatalog\u002Ftests\u002Ftest_api.py\n  test_list_books [pytest] :7  direct  via route:GET \u002Fapi\u002Fbooks\u002F\n  test_book_endpoints [pytest] :13  direct  via route:GET \u002Fapi\u002Fbooks\u002F{book_id}\u002F\n  test_order_needs_token [pytest] :18  direct  via route:POST \u002Fapi\u002Forders\u002F\n\nentry points: 6\n  http_route  GET \u002Fapi\u002Fbooks\u002F  (catalog\u002Fapi.py:15)  via route:GET \u002Fapi\u002Fbooks\u002F\n  http_route  GET \u002Fapi\u002Fbooks\u002F{book_id}\u002F  (catalog\u002Fapi.py:20)  via route:GET \u002Fapi\u002Fbooks\u002F{book_id}\u002F\n  http_route  GET \u002Fapi\u002Fbooks\u002F{book_id}\u002Favailability\u002F  (catalog\u002Fapi.py:31)  via route:GET \u002Fapi\u002Fbooks\u002F{book_id}\u002Favailability\u002F\n  http_route  GET \u002Fapi\u002Forders\u002F{order_id}\u002F  (catalog\u002Fapi.py:49)  via route:GET \u002Fapi\u002Forders\u002F{order_id}\u002F\n  http_route  POST \u002Fapi\u002Fbooks\u002F  (catalog\u002Fapi.py:25)  via route:POST \u002Fapi\u002Fbooks\u002F\n  http_route  POST \u002Fapi\u002Forders\u002F  (catalog\u002Fapi.py:37)  via route:POST \u002Fapi\u002Forders\u002F\n",[157,398,396],{"__ignoreMap":155},[141,400,401,404,405,408,409,200],{},[157,402,403],{},"--base main"," keeps only the affected lines. ",[157,406,407],{},"--quiet"," prints the test files. See ",[198,410,26],{"href":411},"\u002Fdocs\u002Fcli#affected",[145,413,415],{"id":414},"link-a-frontend-and-a-backend","Link a frontend and a backend",[141,417,418,419,421,422,200],{},"Flutter app plus Django API. Needs the Dart SDK; ",[157,420,195],{}," shows ",[157,423,424],{},"dart exact",[150,426,428],{"className":152,"code":427,"language":154,"meta":155,"style":155},"cg index examples\u002Fbookstore-flutter --name bookstore-flutter --db out\u002Fapp.db\ncg link --backend out\u002Fapi.db --frontend out\u002Fapp.db \\\n        --backend-name bookstore-django --frontend-name bookstore-flutter --db out\u002Fgraph.db\ncg routes --db out\u002Fgraph.db\n",[157,429,430,449,472,489],{"__ignoreMap":155},[160,431,432,434,436,439,441,444,446],{"class":162,"line":163},[160,433,187],{"class":166},[160,435,240],{"class":170},[160,437,438],{"class":170}," examples\u002Fbookstore-flutter",[160,440,246],{"class":170},[160,442,443],{"class":170}," bookstore-flutter",[160,445,252],{"class":170},[160,447,448],{"class":170}," out\u002Fapp.db\n",[160,450,451,453,456,459,462,465,468],{"class":162,"line":177},[160,452,187],{"class":166},[160,454,455],{"class":170}," link",[160,457,458],{"class":170}," --backend",[160,460,461],{"class":170}," out\u002Fapi.db",[160,463,464],{"class":170}," --frontend",[160,466,467],{"class":170}," out\u002Fapp.db",[160,469,471],{"class":470},"sZWGQ"," \\\n",[160,473,474,477,479,482,484,486],{"class":162,"line":184},[160,475,476],{"class":170},"        --backend-name",[160,478,249],{"class":170},[160,480,481],{"class":170}," --frontend-name",[160,483,443],{"class":170},[160,485,252],{"class":170},[160,487,488],{"class":170}," out\u002Fgraph.db\n",[160,490,492,494,497,499],{"class":162,"line":491},4,[160,493,187],{"class":166},[160,495,496],{"class":170}," routes",[160,498,252],{"class":170},[160,500,488],{"class":170},[141,502,503,504,200],{},"Link stats: ",[157,505,506],{},"\"client\": \"bookstore-flutter\", \"server\": \"bookstore-django\", \"endpoints\": 7, \"endpoints_matched\": 6",[150,508,511],{"className":509,"code":510,"language":275,"meta":155},[273],"GET \u002Fapi\u002Fbooks\u002F  @bookstore-django\u002Fcatalog\u002Fapi.py:15  NO AUTH\n    guards: (none)\n    called from: BookRepository.fetchBooks (book_repository.dart) @book_repository.dart:10\n",[157,512,510],{"__ignoreMap":155},[141,514,515,518,519,522,523,359,526,529,530,200],{},[157,516,517],{},"cg reaches table:store_books --db out\u002Fgraph.db"," now also lists Flutter UI code (for example ",[157,520,521],{},"lib\u002Fblocs\u002Fbooks\u002Fbooks_bloc.dart#BooksBloc._onLoad ... ui_page(1)","). The Laravel API and Nuxt sample (",[157,524,525],{},"examples\u002Fbookstore-api",[157,527,528],{},"examples\u002Fbookstore-web","; needs PHP 8.2+, Composer, Node 20+) and the Nest, Next and Express samples link the same way. Several apps: ",[198,531,533],{"href":532},"\u002Fdocs\u002Fcli#workspace","Workspace",[145,535,537],{"id":536},"connect-an-agent-mcp","Connect an agent (MCP)",[141,539,540,543,544,359,547,359,550,553,554,374,557,560,561,564,565,567],{},[157,541,542],{},"cg install --host cursor"," (or ",[157,545,546],{},"claude",[157,548,549],{},"codex",[157,551,552],{},"vscode",", …) registers the MCP server and writes a short \"use cg first\" rule to ",[157,555,556],{},"AGENTS.md",[157,558,559],{},".cursor\u002Frules\u002Fcg.mdc"," (",[157,562,563],{},"--no-rules"," skips that). The key is ",[157,566,187],{},":",[150,569,573],{"className":570,"code":571,"language":572,"meta":155,"style":155},"language-json shiki shiki-themes cg-light cg-light cg-dark","{\"mcpServers\": {\"cg\": {\n  \"command\": \"cg-mcp\",\n  \"args\": [\"--db\", \"out\u002Fgraph.db\"]}}}\n","json",[157,574,575,605,628],{"__ignoreMap":155},[160,576,577,580,583,587,589,591,594,596,598,600,602],{"class":162,"line":163},[160,578,579],{"class":226},"{",[160,581,582],{"class":226},"\"",[160,584,586],{"class":585},"sbOAO","mcpServers",[160,588,582],{"class":226},[160,590,567],{"class":226},[160,592,593],{"class":226}," {",[160,595,582],{"class":226},[160,597,187],{"class":585},[160,599,582],{"class":226},[160,601,567],{"class":226},[160,603,604],{"class":226}," {\n",[160,606,607,610,613,615,617,620,623,625],{"class":162,"line":177},[160,608,609],{"class":226},"  \"",[160,611,612],{"class":585},"command",[160,614,582],{"class":226},[160,616,567],{"class":226},[160,618,619],{"class":226}," \"",[160,621,622],{"class":170},"cg-mcp",[160,624,582],{"class":226},[160,626,627],{"class":226},",\n",[160,629,630,632,635,637,639,642,644,647,649,652,654,657,659],{"class":162,"line":184},[160,631,609],{"class":226},[160,633,634],{"class":585},"args",[160,636,582],{"class":226},[160,638,567],{"class":226},[160,640,641],{"class":226}," [",[160,643,582],{"class":226},[160,645,646],{"class":170},"--db",[160,648,582],{"class":226},[160,650,651],{"class":226},",",[160,653,619],{"class":226},[160,655,656],{"class":170},"out\u002Fgraph.db",[160,658,582],{"class":226},[160,660,661],{"class":226},"]}}}\n",[141,663,664,667,668,359,670,363,673,676,677,680,681,200],{},[157,665,666],{},"cg agents install --mcp"," previews the change and asks before writing. It adds rules to ",[157,669,556],{},[157,671,672],{},"CLAUDE.md",[157,674,675],{},".cursor\u002Frules"," and the entry to ",[157,678,679],{},".cursor\u002Fmcp.json",". See ",[198,682,62],{"href":63},[145,684,686],{"id":685},"see-it","See it",[141,688,689,692,693,698,699],{},[157,690,691],{},"cg serve --db out\u002Fgraph.db",", then open ",[198,694,695],{"href":695,"rel":696},"http:\u002F\u002F127.0.0.1:8177\u002F",[697],"nofollow"," .\n",[198,700,702],{"href":701},"\u002Fmedia\u002Fcg-view-demo.mp4",[703,704],"img",{"alt":705,"src":706},"cg visual view: the graph around the warehouse connection, a selected node with its evidence paths and source, then the planned-change overlay for the preorders plan","\u002Fmedia\u002Fcg-view-preview.gif",[141,708,709,200],{},[198,710,131],{"href":132},[145,712,714],{"id":713},"next","Next",[716,717,718,723,727,731,735,739,743,747,751],"ul",{},[719,720,721],"li",{},[198,722,34],{"href":35},[719,724,725],{},[198,726,95],{"href":96},[719,728,729],{},[198,730,115],{"href":116},[719,732,733],{},[198,734,54],{"href":55},[719,736,737],{},[198,738,50],{"href":51},[719,740,741],{},[198,742,111],{"href":112},[719,744,745],{},[198,746,87],{"href":88},[719,748,749],{},[198,750,83],{"href":84},[719,752,753],{},[198,754,58],{"href":59},[756,757,758],"style",{},"html pre.shiki code .sZJo5, html code.shiki .sZJo5{--shiki-light:#65A30D;--shiki-default:#65A30D;--shiki-dark:#84CC16}html pre.shiki code .sha9Y, html code.shiki .sha9Y{--shiki-light:#9F8CFF;--shiki-default:#9F8CFF;--shiki-dark:#C4B5FD}html pre.shiki code .seS0s, html code.shiki .seS0s{--shiki-light:#71717A;--shiki-light-font-style:italic;--shiki-default:#71717A;--shiki-default-font-style:italic;--shiki-dark:#A1A1AA;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZ_TN, html code.shiki .sZ_TN{--shiki-light:#71717A;--shiki-default:#71717A;--shiki-dark:#A1A1AA}html pre.shiki code .sZWGQ, html code.shiki .sZWGQ{--shiki-light:#8B5CF6;--shiki-default:#8B5CF6;--shiki-dark:#C4B5FD}html pre.shiki code .sbOAO, html code.shiki .sbOAO{--shiki-light:#3F6212;--shiki-default:#3F6212;--shiki-dark:#A3E635}",{"title":155,"searchDepth":491,"depth":177,"links":760},[761,762,763,770,771,772,773],{"id":147,"depth":177,"text":148},{"id":203,"depth":177,"text":204},{"id":280,"depth":177,"text":281,"children":764},[765,766,767,768,769],{"id":285,"depth":184,"text":286},{"id":300,"depth":184,"text":301},{"id":315,"depth":184,"text":316},{"id":330,"depth":184,"text":331},{"id":381,"depth":184,"text":382},{"id":414,"depth":177,"text":415},{"id":536,"depth":177,"text":537},{"id":685,"depth":177,"text":686},{"id":713,"depth":177,"text":714},"md",{},true,{"title":99,"description":143},"hBMiV2qi-Z1VFktoeU2nShHsLkw_T2U5hjO_y75SMLk",[780,782],{"title":95,"path":96,"stem":97,"description":781,"children":-1},"What .py adds beyond Install, CLI specs, and Graph schema: source roots and module names, reference how values, and FastAPI \u002F Starlette \u002F Flask route ids.\nThe parser is the stdlib ast module. A checkout needs no virtualenv, and the project is never imported.\nWhy a file is unmapped: cg coverage. The python.source_roots key: Configuration.",{"title":103,"path":104,"stem":105,"description":783,"children":-1},"The graph is one SQLite file. Node and edge details for a language live on that language's page; this page is the index of tables and kinds.",1792170232398]