{"nodes": [{"id": "d_yt_channel_scraper_src_yt_scraper_config_py", "label": "config.py", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L1"}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_delayconfig", "label": "DelayConfig", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L11", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_ytdlpconfig", "label": "YtDlpConfig", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L19", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_syncconfig", "label": "SyncConfig", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L25", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_config", "label": "Config", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L42", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_config_database_path_resolved", "label": ".database_path_resolved()", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L65", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "D:\\yt-channel-scraper\\src\\yt_scraper\\config.py"}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_config_output_dir_resolved", "label": ".output_dir_resolved()", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L69", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_config_template_path_resolved", "label": ".template_path_resolved()", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L73", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "label": "parse_languages()", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L82", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "D:\\yt-channel-scraper\\src\\yt_scraper\\config.py"}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "label": "load_config()", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L98", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "label": "_build_config()", "file_type": "code", "source_file": "src/yt_scraper/config.py", "source_location": "L107", "_callable": true}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_rationale_26", "label": "Incremental channel sync \u2014 how far back a routine re-scan looks. The /video", "file_type": "rationale", "source_file": "src/yt_scraper/config.py", "source_location": "L26"}, {"id": "d_yt_channel_scraper_src_yt_scraper_config_rationale_83", "label": "Normalise legacy list / new dict / None into ``{lang: mode}``.", "file_type": "rationale", "source_file": "src/yt_scraper/config.py", "source_location": "L83"}], "edges": [{"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L3", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L4", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L5", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "yaml", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L7", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_delayconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L11", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_ytdlpconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L19", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_syncconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L25", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L42", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_config_database_path_resolved", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L65", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config_database_path_resolved", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L65", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_config_output_dir_resolved", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L69", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config_output_dir_resolved", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L69", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_config_template_path_resolved", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L73", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config_template_path_resolved", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L73", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L82", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L82", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L98", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L98", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_config", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L98", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_py", "target": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L107", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L107", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_config", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L107", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config_database_path_resolved", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L66", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config_output_dir_resolved", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L70", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_config_template_path_resolved", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L74", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L99", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L104", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L112", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L115", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_delayconfig", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L122", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_ytdlpconfig", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L128", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "target": "d_yt_channel_scraper_src_yt_scraper_config_syncconfig", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L132", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_rationale_26", "target": "d_yt_channel_scraper_src_yt_scraper_config_syncconfig", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L26", "weight": 1.0}, {"source": "d_yt_channel_scraper_src_yt_scraper_config_rationale_83", "target": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/yt_scraper/config.py", "source_location": "L83", "weight": 1.0}], "raw_calls": [{"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_config_database_path_resolved", "callee": "resolve", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L66", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_config_output_dir_resolved", "callee": "resolve", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L70", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_config_template_path_resolved", "callee": "resolve", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L74", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/yt_scraper/config.py", "source_location": "L87"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "callee": "items", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L89", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "callee": "strip", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L90", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "callee": "lower", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L90", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "callee": "list", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/yt_scraper/config.py", "source_location": "L93"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_parse_languages", "callee": "tuple", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/yt_scraper/config.py", "source_location": "L93"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "callee": "exists", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L100", "receiver": "p"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "callee": "FileNotFoundError", "is_member_call": false, "source_file": "src/yt_scraper/config.py", "source_location": "L101", "receiver": null}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "callee": "safe_load", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L103", "receiver": "yaml"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_load_config", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/yt_scraper/config.py", "source_location": "L103"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L108", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L109", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L110", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L111", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L112", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L116", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L119", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L120", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L121", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L123", "receiver": "delay_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L124", "receiver": "delay_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L125", "receiver": "delay_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L126", "receiver": "delay_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L129", "receiver": "ydl_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L130", "receiver": "ydl_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L133", "receiver": "sync_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L134", "receiver": "sync_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L135", "receiver": "sync_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L136", "receiver": "sync_raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L138", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L139", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L140", "receiver": "raw"}, {"caller_nid": "d_yt_channel_scraper_src_yt_scraper_config_build_config", "callee": "get", "is_member_call": true, "source_file": "src/yt_scraper/config.py", "source_location": "L141", "receiver": "raw"}]}