{ "project_root": ".", "generated_at": "2026-01-16T14:37:30.265701", "modules": [ { "name": "generate_semantic_map", "type": "Module", "start_line": 1, "end_line": 613, "tags": { "SEMANTICS": "semantic_analysis, parser, map_generator, compliance_checker", "PURPOSE": "Scans the codebase to generate a Semantic Map and Compliance Report based on the System Standard.", "LAYER": "DevOps/Tooling" }, "relations": [ { "type": "READS", "target": "FileSystem" }, { "type": "PRODUCES", "target": "semantics/semantic_map.json" }, { "type": "PRODUCES", "target": "specs/project_map.md" }, { "type": "PRODUCES", "target": "semantics/reports/semantic_report_*.md" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 21, "end_line": 27, "tags": { "PURPOSE": "Mock init.", "PRE": "name is a string.", "POST": "Instance initialized." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "__enter__", "type": "Function", "start_line": 29, "end_line": 35, "tags": { "PURPOSE": "Mock enter.", "PRE": "Instance initialized.", "POST": "Returns self." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "__exit__", "type": "Function", "start_line": 37, "end_line": 43, "tags": { "PURPOSE": "Mock exit.", "PRE": "Context entered.", "POST": "Context exited." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "SemanticEntity", "type": "Class", "start_line": 67, "end_line": 167, "tags": { "PURPOSE": "Represents a code entity (Module, Function, Component) found during parsing.", "INVARIANT": "start_line is always set; end_line is set upon closure." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 71, "end_line": 87, "tags": { "PURPOSE": "Initializes a new SemanticEntity instance.", "PRE": "name, type_, start_line, file_path are provided.", "POST": "Instance is initialized with default values." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "to_dict", "type": "Function", "start_line": 89, "end_line": 109, "tags": { "PURPOSE": "Serializes the entity to a dictionary for JSON output.", "PRE": "Entity is fully populated.", "POST": "Returns a dictionary representation.", "RETURN": "Dict representation of the entity." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "validate", "type": "Function", "start_line": 111, "end_line": 140, "tags": { "PURPOSE": "Checks for semantic compliance (closure, mandatory tags, belief state).", "PRE": "Entity structure is complete.", "POST": "Populates self.compliance_issues." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_score", "type": "Function", "start_line": 142, "end_line": 166, "tags": { "PURPOSE": "Calculates a compliance score (0.0 to 1.0).", "PRE": "validate() has been called.", "POST": "Returns a float score.", "RETURN": "Float score." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "get_patterns", "type": "Function", "start_line": 170, "end_line": 198, "tags": { "PURPOSE": "Returns regex patterns for a specific language.", "PRE": "lang is either 'python' or 'svelte_js'.", "POST": "Returns a dictionary of compiled regex patterns.", "PARAM": "lang (str) - 'python' or 'svelte_js'", "RETURN": "Dict containing compiled regex patterns." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "parse_file", "type": "Function", "start_line": 201, "end_line": 324, "tags": { "PURPOSE": "Parses a single file to extract semantic entities.", "PRE": "full_path, rel_path, lang are valid strings.", "POST": "Returns extracted entities and list of issues.", "PARAM": "lang - Language identifier.", "RETURN": "Tuple[List[SemanticEntity], List[str]] - Entities found and global issues." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "SemanticMapGenerator", "type": "Class", "start_line": 327, "end_line": 607, "tags": { "PURPOSE": "Orchestrates the mapping process." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 330, "end_line": 341, "tags": { "PURPOSE": "Initializes the generator with a root directory.", "PRE": "root_dir is a valid path string.", "POST": "Generator instance is ready." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_load_gitignore", "type": "Function", "start_line": 343, "end_line": 359, "tags": { "PURPOSE": "Loads patterns from .gitignore file.", "PRE": ".gitignore exists in root_dir.", "POST": "Returns set of ignore patterns.", "RETURN": "Set of patterns to ignore." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_is_ignored", "type": "Function", "start_line": 361, "end_line": 402, "tags": { "PURPOSE": "Checks if a path should be ignored based on .gitignore or hardcoded defaults.", "PRE": "rel_path is a valid relative path string.", "POST": "Returns True if the path should be ignored.", "PARAM": "rel_path (str) - Path relative to root.", "RETURN": "bool - True if ignored." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "run", "type": "Function", "start_line": 404, "end_line": 416, "tags": { "PURPOSE": "Main execution flow.", "PRE": "Generator is initialized.", "POST": "Semantic map and reports are generated." }, "relations": [ { "type": "CALLS", "target": "_walk_and_parse" }, { "type": "CALLS", "target": "_generate_artifacts" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_walk_and_parse", "type": "Function", "start_line": 418, "end_line": 447, "tags": { "PURPOSE": "Recursively walks directories and triggers parsing.", "PRE": "root_dir exists.", "POST": "All files are scanned and entities extracted." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_process_file_results", "type": "Function", "start_line": 449, "end_line": 476, "tags": { "PURPOSE": "Validates entities and calculates file scores.", "PRE": "Entities have been parsed from the file.", "POST": "File score is calculated and issues collected." }, "relations": [], "children": [ { "name": "validate_recursive", "type": "Function", "start_line": 458, "end_line": 470, "tags": { "PURPOSE": "Recursively validates a list of entities.", "PRE": "ent_list is a list of SemanticEntity objects.", "POST": "All entities and their children are validated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "_generate_artifacts", "type": "Function", "start_line": 478, "end_line": 501, "tags": { "PURPOSE": "Writes output files.", "PRE": "Parsing and validation are complete.", "POST": "JSON and Markdown artifacts are written to disk." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_generate_report", "type": "Function", "start_line": 503, "end_line": 543, "tags": { "PURPOSE": "Generates the Markdown compliance report.", "PRE": "File scores and issues are available.", "POST": "Markdown report is created in reports directory." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_collect_issues", "type": "Function", "start_line": 545, "end_line": 555, "tags": { "PURPOSE": "Helper to collect issues for a specific file from the entity tree.", "PRE": "entities list and file_path are valid.", "POST": "issues list is populated with compliance issues." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_generate_compressed_map", "type": "Function", "start_line": 557, "end_line": 573, "tags": { "PURPOSE": "Generates the token-optimized project map.", "PRE": "Entities have been processed.", "POST": "Markdown project map is written." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_write_entity_md", "type": "Function", "start_line": 575, "end_line": 605, "tags": { "PURPOSE": "Recursive helper to write entity tree to Markdown.", "PRE": "f is an open file handle, entity is valid.", "POST": "Entity details are written to the file." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "migration_script", "type": "Module", "start_line": 1, "end_line": 413, "tags": { "SEMANTICS": "migration, cli, superset, ui, logging, error-recovery, batch-delete", "PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 CLI \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 Superset \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0448\u0438\u0431\u043e\u043a.", "LAYER": "App", "PUBLIC_API": "Migration" }, "relations": [ { "type": "DEPENDS_ON", "target": "superset_tool.client" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils" } ], "children": [ { "name": "Migration", "type": "Class", "start_line": 25, "end_line": 408, "tags": { "PURPOSE": "\u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u00ab\u0443\u0434\u0430\u043b\u0438\u0442\u044c\u2011\u0438\u2011\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00bb \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430." }, "relations": [ { "type": "CREATES_INSTANCE_OF", "target": "SupersetLogger" }, { "type": "USES", "target": "SupersetClient" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 33, "end_line": 51, "tags": { "PURPOSE": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043b\u043e\u0433\u0433\u0435\u0440 \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.", "PRE": "None.", "POST": "`self.logger` \u0433\u043e\u0442\u043e\u0432 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e; `enable_delete_on_failure` = `False`." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "run", "type": "Function", "start_line": 53, "end_line": 71, "tags": { "PURPOSE": "\u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u2013 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0448\u0430\u0433\u043e\u0432 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438.", "PRE": "\u041b\u043e\u0433\u0433\u0435\u0440 \u0433\u043e\u0442\u043e\u0432.", "POST": "\u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435." }, "relations": [ { "type": "CALLS", "target": "self.ask_delete_on_failure" }, { "type": "CALLS", "target": "self.select_environments" }, { "type": "CALLS", "target": "self.select_dashboards" }, { "type": "CALLS", "target": "self.confirm_db_config_replacement" }, { "type": "CALLS", "target": "self.execute_migration" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "ask_delete_on_failure", "type": "Function", "start_line": 73, "end_line": 88, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430.", "PRE": "None.", "POST": "`self.enable_delete_on_failure` \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d." }, "relations": [ { "type": "CALLS", "target": "yesno" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "select_environments", "type": "Function", "start_line": 90, "end_line": 130, "tags": { "PURPOSE": "\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Superset.", "PRE": "`setup_clients` \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b.", "POST": "`self.from_c` \u0438 `self.to_c` \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b." }, "relations": [ { "type": "CALLS", "target": "setup_clients" }, { "type": "CALLS", "target": "menu" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "select_dashboards", "type": "Function", "start_line": 132, "end_line": 188, "tags": { "PURPOSE": "\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438.", "PRE": "`self.from_c` \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d.", "POST": "`self.dashboards_to_migrate` \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d." }, "relations": [ { "type": "CALLS", "target": "self.from_c.get_dashboards" }, { "type": "CALLS", "target": "checklist" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "confirm_db_config_replacement", "type": "Function", "start_line": 190, "end_line": 225, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u0411\u0414 \u0432 YAML-\u0444\u0430\u0439\u043b\u0430\u0445.", "PRE": "None.", "POST": "`self.db_config_replacement` \u043b\u0438\u0431\u043e `None`, \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d." }, "relations": [ { "type": "CALLS", "target": "yesno" }, { "type": "CALLS", "target": "self._select_databases" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "_select_databases", "type": "Function", "start_line": 227, "end_line": 306, "tags": { "PURPOSE": "\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0438 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0411\u0414 \u0447\u0435\u0440\u0435\u0437 API.", "PRE": "Clients are initialized.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0440\u0442\u0435\u0436 (\u0441\u0442\u0430\u0440\u0430\u044f \u0411\u0414, \u043d\u043e\u0432\u0430\u044f \u0411\u0414) \u0438\u043b\u0438 (None, None) \u043f\u0440\u0438 \u043e\u0442\u043c\u0435\u043d\u0435." }, "relations": [ { "type": "CALLS", "target": "self.from_c.get_databases" }, { "type": "CALLS", "target": "self.to_c.get_databases" }, { "type": "CALLS", "target": "self.from_c.get_database" }, { "type": "CALLS", "target": "self.to_c.get_database" }, { "type": "CALLS", "target": "menu" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "_batch_delete_by_ids", "type": "Function", "start_line": 308, "end_line": 333, "tags": { "PURPOSE": "\u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u043f\u043e \u0438\u0445 ID \u0435\u0434\u0438\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c.", "PRE": "`ids` \u2013 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b.", "POST": "\u0412\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u044b (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438).", "PARAM": "ids (List[int]) - \u0421\u043f\u0438\u0441\u043e\u043a ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f." }, "relations": [ { "type": "CALLS", "target": "self.to_c.network.request" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "execute_migration", "type": "Function", "start_line": 335, "end_line": 406, "tags": { "PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u0440\u0442-\u0438\u043c\u043f\u043e\u0440\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.", "PRE": "`self.dashboards_to_migrate` \u043d\u0435 \u043f\u0443\u0441\u0442; `self.from_c` \u0438 `self.to_c` \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.", "POST": "\u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b; \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435 - \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0438\u043b\u0438 \u0437\u0430\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u044b." }, "relations": [ { "type": "CALLS", "target": "self.from_c.export_dashboard" }, { "type": "CALLS", "target": "create_temp_file" }, { "type": "CALLS", "target": "update_yamls" }, { "type": "CALLS", "target": "create_dashboard_export" }, { "type": "CALLS", "target": "self.to_c.import_dashboard" }, { "type": "CALLS", "target": "self._batch_delete_by_ids" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.exceptions", "type": "Module", "start_line": 1, "end_line": 173, "tags": { "PURPOSE": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a.", "SEMANTICS": "exception, error, hierarchy", "LAYER": "Infra" }, "relations": [], "children": [ { "name": "SupersetToolError", "type": "Class", "start_line": 11, "end_line": 25, "tags": { "PURPOSE": "\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c.", "PARAM": "context (Optional[Dict[str, Any]]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "Exception" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 17, "end_line": 24, "tags": { "PURPOSE": "Initializes the base tool error.", "PRE": "message is a string, context is optional dict.", "POST": "Error is initialized with combined message and context." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "AuthenticationError", "type": "Class", "start_line": 27, "end_line": 40, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439.", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetToolError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 33, "end_line": 39, "tags": { "PURPOSE": "Initializes an authentication error.", "PRE": "Optional message and context.", "POST": "Error is initialized with authentication context." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "PermissionDeniedError", "type": "Class", "start_line": 42, "end_line": 57, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0430, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u0438 \u043e\u0442\u043a\u0430\u0437\u0435 \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443.", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "AuthenticationError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 49, "end_line": 56, "tags": { "PURPOSE": "Initializes a permission denied error.", "PRE": "Optional message, permission string, and context.", "POST": "Error is initialized with permission details." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "SupersetAPIError", "type": "Class", "start_line": 59, "end_line": 72, "tags": { "PURPOSE": "\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 Superset API.", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetToolError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 65, "end_line": 71, "tags": { "PURPOSE": "Initializes a Superset API error.", "PRE": "Optional message and context.", "POST": "Error is initialized with API failure context." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "ExportError", "type": "Class", "start_line": 74, "end_line": 87, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430.", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetAPIError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 80, "end_line": 86, "tags": { "PURPOSE": "Initializes an export error.", "PRE": "Optional message and context.", "POST": "Error is initialized with export failure subtype." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DashboardNotFoundError", "type": "Class", "start_line": 89, "end_line": 103, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0438\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d (404).", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetAPIError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 96, "end_line": 102, "tags": { "PURPOSE": "Initializes a dashboard not found error.", "PRE": "dashboard_id_or_slug is provided.", "POST": "Error is initialized with resource identification." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DatasetNotFoundError", "type": "Class", "start_line": 105, "end_line": 119, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (404).", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetAPIError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 112, "end_line": 118, "tags": { "PURPOSE": "Initializes a dataset not found error.", "PRE": "dataset_id_or_slug is provided.", "POST": "Error is initialized with resource identification." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "InvalidZipFormatError", "type": "Class", "start_line": 121, "end_line": 135, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetToolError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 128, "end_line": 134, "tags": { "PURPOSE": "Initializes an invalid ZIP format error.", "PRE": "Optional message, file path, and context.", "POST": "Error is initialized with file validation context." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "NetworkError", "type": "Class", "start_line": 137, "end_line": 150, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c.", "PARAM": "context (Any) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetToolError" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 143, "end_line": 149, "tags": { "PURPOSE": "Initializes a network error.", "PRE": "Optional message and context.", "POST": "Error is initialized with network failure context." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "FileOperationError", "type": "Class", "start_line": 152, "end_line": 157, "tags": { "PURPOSE": "\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (I/O)." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetToolError" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "InvalidFileStructureError", "type": "Class", "start_line": 159, "end_line": 164, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439." }, "relations": [ { "type": "INHERITS_FROM", "target": "FileOperationError" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "ConfigurationError", "type": "Class", "start_line": 166, "end_line": 171, "tags": { "PURPOSE": "\u041e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430." }, "relations": [ { "type": "INHERITS_FROM", "target": "SupersetToolError" } ], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.models", "type": "Module", "start_line": 1, "end_line": 87, "tags": { "SEMANTICS": "pydantic, model, config, validation, data-structure", "PURPOSE": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 Pydantic-\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445.", "LAYER": "Infra", "PUBLIC_API": "SupersetConfig, DatabaseConfig" }, "relations": [ { "type": "DEPENDS_ON", "target": "pydantic" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils.logger" } ], "children": [ { "name": "SupersetConfig", "type": "Class", "start_line": 17, "end_line": 61, "tags": { "PURPOSE": "\u041c\u043e\u0434\u0435\u043b\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 Superset API." }, "relations": [ { "type": "INHERITS_FROM", "target": "pydantic.BaseModel" } ], "children": [ { "name": "validate_auth", "type": "Function", "start_line": 28, "end_line": 40, "tags": { "PURPOSE": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044c `auth` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044f.", "PRE": "`v` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 `v`, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f (`provider`, `username`, `password`, `refresh`) \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.", "THROW": "ValueError - \u0415\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f.", "PARAM": "v (Dict[str, str]) - \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f auth." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "normalize_base_url", "type": "Function", "start_line": 42, "end_line": 57, "tags": { "PURPOSE": "\u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 `base_url`, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f `/api/v1`, \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.", "PRE": "`v` \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 `v`.", "THROW": "ValueError - \u0415\u0441\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 URL \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d.", "PARAM": "v (str) - \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f base_url." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DatabaseConfig", "type": "Class", "start_line": 63, "end_line": 85, "tags": { "PURPOSE": "\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432." }, "relations": [ { "type": "INHERITS_FROM", "target": "pydantic.BaseModel" } ], "children": [ { "name": "validate_config", "type": "Function", "start_line": 70, "end_line": 81, "tags": { "PURPOSE": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044c `database_config` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u044e\u0447\u0438 'old' \u0438 'new'.", "PRE": "`v` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 `v`, \u0435\u0441\u043b\u0438 \u043a\u043b\u044e\u0447\u0438 'old' \u0438 'new' \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.", "THROW": "ValueError - \u0415\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438.", "PARAM": "v (Dict[str, Dict[str, Any]]) - \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f database_config." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.client", "type": "Module", "start_line": 1, "end_line": 508, "tags": { "SEMANTICS": "superset, api, client, rest, http, dashboard, dataset, import, export", "PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Superset REST API, \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u044f \u043b\u043e\u0433\u0438\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.", "LAYER": "Domain", "INVARIANT": "All network operations must use the internal APIClient instance.", "CONSTRAINT": "No direct use of 'requests' library outside of APIClient.", "PUBLIC_API": "SupersetClient" }, "relations": [ { "type": "DEPENDS_ON", "target": "superset_tool.models" }, { "type": "DEPENDS_ON", "target": "superset_tool.exceptions" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils" } ], "children": [ { "name": "SupersetClient", "type": "Class", "start_line": 27, "end_line": 506, "tags": { "PURPOSE": "\u041a\u043b\u0430\u0441\u0441-\u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 Superset REST API, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438 \u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u043c\u0438." }, "relations": [ { "type": "CREATES_INSTANCE_OF", "target": "APIClient" }, { "type": "USES", "target": "SupersetConfig" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 32, "end_line": 52, "tags": { "PURPOSE": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442.", "PRE": "`config` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c SupersetConfig.", "POST": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b `logger`, `config`, \u0438 `network` \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0440\u0430\u0431\u043e\u0442\u0435.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_validate_config", "type": "Function", "start_line": 54, "end_line": 65, "tags": { "PURPOSE": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0442\u0438\u043f.", "PRE": "`config` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d.", "POST": "\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f.", "THROW": "TypeError - \u0415\u0441\u043b\u0438 `config` \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c `SupersetConfig`.", "PARAM": "config (SupersetConfig) - \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "headers", "type": "Function", "start_line": 68, "end_line": 75, "tags": { "PURPOSE": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c.", "PRE": "self.network \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u043a\u0435\u043d \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_dashboards", "type": "Function", "start_line": 77, "end_line": 108, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.", "PRE": "self.network \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e API.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "PARAM": "query (Optional[Dict]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043b\u044f API.", "RETURN": "Tuple[int, List[Dict]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432)." }, "relations": [ { "type": "CALLS", "target": "self._fetch_total_object_count" }, { "type": "CALLS", "target": "self._fetch_all_pages" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "export_dashboard", "type": "Function", "start_line": 110, "end_line": 134, "tags": { "PURPOSE": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0432 \u0432\u0438\u0434\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.", "PRE": "dashboard_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.", "THROW": "ExportError - \u0415\u0441\u043b\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u0435\u0439.", "PARAM": "dashboard_id (int) - ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430.", "RETURN": "Tuple[bytes, str] - \u0411\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430." }, "relations": [ { "type": "CALLS", "target": "self.network.request" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "import_dashboard", "type": "Function", "start_line": 136, "end_line": 169, "tags": { "PURPOSE": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0438\u0437 ZIP-\u0444\u0430\u0439\u043b\u0430 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435.", "PRE": "\u0424\u0430\u0439\u043b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 `file_name`, \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c Superset.", "POST": "\u0414\u0430\u0448\u0431\u043e\u0440\u0434 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d \u043e\u0442\u0432\u0435\u0442 API.", "THROW": "InvalidZipFormatError - \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c Superset.", "PARAM": "dash_slug (Optional[str]) - Slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 ID, \u0435\u0441\u043b\u0438 ID \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d.", "RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442 API \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430." }, "relations": [ { "type": "CALLS", "target": "self._do_import" }, { "type": "CALLS", "target": "self.delete_dashboard" }, { "type": "CALLS", "target": "self.get_dashboards" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_resolve_target_id_for_delete", "type": "Function", "start_line": 171, "end_line": 205, "tags": { "PURPOSE": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f ID \u0438\u043b\u0438 slug.", "PARAM": "dash_slug (Optional[str]) - Slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.", "PRE": "\u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 (dash_id \u0438\u043b\u0438 dash_slug) \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 None.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e slug.", "RETURN": "Optional[int] - \u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 ID \u0438\u043b\u0438 None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_do_import", "type": "Function", "start_line": 207, "end_line": 229, "tags": { "PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0438\u043c\u043f\u043e\u0440\u0442 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.", "PRE": "\u0424\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.", "POST": "\u0424\u0430\u0439\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d \u043e\u0442\u0432\u0435\u0442 API.", "THROW": "FileNotFoundError - \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.", "PARAM": "file_name (Union[str, Path]) - \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443.", "RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442 API." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "delete_dashboard", "type": "Function", "start_line": 231, "end_line": 248, "tags": { "PURPOSE": "\u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u043e \u0435\u0433\u043e ID \u0438\u043b\u0438 slug.", "PRE": "dashboard_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d.", "POST": "\u0414\u0430\u0448\u0431\u043e\u0440\u0434 \u0443\u0434\u0430\u043b\u0435\u043d \u0438\u043b\u0438 \u0437\u0430\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "PARAM": "dashboard_id (Union[int, str]) - ID \u0438\u043b\u0438 slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430." }, "relations": [ { "type": "CALLS", "target": "self.network.request" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_extract_dashboard_id_from_zip", "type": "Function", "start_line": 250, "end_line": 272, "tags": { "PURPOSE": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438\u0437 `metadata.yaml` \u0432\u043d\u0443\u0442\u0440\u0438 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.", "PARAM": "file_name (Union[str, Path]) - \u041f\u0443\u0442\u044c \u043a ZIP-\u0444\u0430\u0439\u043b\u0443.", "PRE": "\u0424\u0430\u0439\u043b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 `file_name`, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 metadata.yaml, \u0438\u043d\u0430\u0447\u0435 None.", "THROW": "ImportError - \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d `yaml`.", "RETURN": "Optional[int] - ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438\u043b\u0438 None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_extract_dashboard_slug_from_zip", "type": "Function", "start_line": 274, "end_line": 296, "tags": { "PURPOSE": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438\u0437 `metadata.yaml` \u0432\u043d\u0443\u0442\u0440\u0438 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.", "PARAM": "file_name (Union[str, Path]) - \u041f\u0443\u0442\u044c \u043a ZIP-\u0444\u0430\u0439\u043b\u0443.", "PRE": "\u0424\u0430\u0439\u043b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 `file_name`, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 metadata.yaml, \u0438\u043d\u0430\u0447\u0435 None.", "THROW": "ImportError - \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d `yaml`.", "RETURN": "Optional[str] - Slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438\u043b\u0438 None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_validate_export_response", "type": "Function", "start_line": 298, "end_line": 313, "tags": { "PURPOSE": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e HTTP-\u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c.", "PRE": "response \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c requests.Response.", "POST": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u043c ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c.", "THROW": "ExportError - \u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c \u0438\u043b\u0438 \u043f\u0443\u0441\u0442.", "PARAM": "dashboard_id (int) - ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_resolve_export_filename", "type": "Function", "start_line": 315, "end_line": 332, "tags": { "PURPOSE": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0438\u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e.", "PRE": "response \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c requests.Response.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.", "PARAM": "dashboard_id (int) - ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.", "RETURN": "str - \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_validate_query_params", "type": "Function", "start_line": 334, "end_line": 345, "tags": { "PURPOSE": "\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0435\u0439.", "PARAM": "query (Optional[Dict]) - \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.", "PRE": "query, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0435 \u0441 `query`.", "RETURN": "Dict - \u0412\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_fetch_total_object_count", "type": "Function", "start_line": 347, "end_line": 362, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0443 \u0434\u043b\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.", "PARAM": "endpoint (str) - API \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442.", "PRE": "endpoint \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (>= 0).", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "RETURN": "int - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_fetch_all_pages", "type": "Function", "start_line": 364, "end_line": 377, "tags": { "PURPOSE": "\u0418\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u043f\u0430\u0433\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e API \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.", "PARAM": "pagination_options (Dict) - \u041e\u043f\u0446\u0438\u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.", "PRE": "endpoint \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, pagination_options - \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "RETURN": "List[Dict] - \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_validate_import_file", "type": "Function", "start_line": 379, "end_line": 394, "tags": { "PURPOSE": "\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ZIP-\u0430\u0440\u0445\u0438\u0432\u043e\u043c \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 `metadata.yaml`.", "PRE": "zip_path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d.", "POST": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ZIP \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 `metadata.yaml`.", "THROW": "InvalidZipFormatError - \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ZIP \u0438\u043b\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 `metadata.yaml`.", "PARAM": "zip_path (Union[str, Path]) - \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_datasets", "type": "Function", "start_line": 396, "end_line": 418, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.", "PARAM": "query (Optional[Dict]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "PRE": "self.network \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e API.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "RETURN": "Tuple[int, List[Dict]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432)." }, "relations": [ { "type": "CALLS", "target": "self._fetch_total_object_count" }, { "type": "CALLS", "target": "self._fetch_all_pages" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_databases", "type": "Function", "start_line": 420, "end_line": 443, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.", "PARAM": "query (Optional[Dict]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "PRE": "self.network \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e API.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "RETURN": "Tuple[int, List[Dict]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445)." }, "relations": [ { "type": "CALLS", "target": "self._fetch_total_object_count" }, { "type": "CALLS", "target": "self._fetch_all_pages" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_dataset", "type": "Function", "start_line": 445, "end_line": 461, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043f\u043e \u0435\u0433\u043e ID.", "PARAM": "dataset_id (int) - ID \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430.", "PRE": "dataset_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.", "RETURN": "Dict - \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435." }, "relations": [ { "type": "CALLS", "target": "self.network.request" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_database", "type": "Function", "start_line": 463, "end_line": 479, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0435\u0451 ID.", "PARAM": "database_id (int) - ID \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.", "PRE": "database_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.", "RETURN": "Dict - \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445." }, "relations": [ { "type": "CALLS", "target": "self.network.request" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_dataset", "type": "Function", "start_line": 481, "end_line": 504, "tags": { "PURPOSE": "\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043f\u043e \u0435\u0433\u043e ID.", "PARAM": "data (Dict) - \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.", "PRE": "dataset_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c, data - \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c.", "POST": "\u0414\u0430\u0442\u0430\u0441\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d \u043e\u0442\u0432\u0435\u0442 API.", "THROW": "APIError - \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442 API." }, "relations": [ { "type": "CALLS", "target": "self.network.request" } ], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool", "type": "Module", "start_line": 1, "end_line": 14, "tags": { "SEMANTICS": "package, root", "PURPOSE": "Root package for superset_tool.", "LAYER": "Domain", "PUBLIC_API": "SupersetClient, SupersetConfig" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils.init_clients", "type": "Module", "start_line": 1, "end_line": 110, "tags": { "SEMANTICS": "utility, factory, client, initialization, configuration", "PURPOSE": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u044b Superset \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 (DEV, PROD, SBX, PREPROD), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f `keyring` \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u0440\u043e\u043b\u044f\u043c.", "LAYER": "Infra", "PUBLIC_API": "setup_clients" }, "relations": [ { "type": "DEPENDS_ON", "target": "superset_tool.models" }, { "type": "DEPENDS_ON", "target": "superset_tool.client" }, { "type": "DEPENDS_ON", "target": "keyring" } ], "children": [ { "name": "setup_clients", "type": "Function", "start_line": 20, "end_line": 108, "tags": { "PURPOSE": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 `SupersetClient`.", "PRE": "`logger` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c `SupersetLogger`.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438.", "THROW": "Exception - \u041f\u0440\u0438 \u043b\u044e\u0431\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.", "PARAM": "custom_envs (List[Dict[str, Any]]) - \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439.", "RETURN": "Dict[str, SupersetClient] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447 - \u0438\u043c\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 - `SupersetClient`." }, "relations": [ { "type": "CREATES_INSTANCE_OF", "target": "SupersetConfig" }, { "type": "CREATES_INSTANCE_OF", "target": "SupersetClient" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils.logger", "type": "Module", "start_line": 1, "end_line": 156, "tags": { "SEMANTICS": "logging, utility, infrastructure, wrapper", "PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u043d\u0430\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c `logging.Logger` \u0434\u043b\u044f \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0433\u0435\u0440\u0430\u043c\u0438 \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438/\u0438\u043b\u0438 \u0444\u0430\u0439\u043b.", "LAYER": "Infra", "INVARIANT": "\u041b\u043e\u0433\u0433\u0435\u0440 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f.", "PUBLIC_API": "SupersetLogger" }, "relations": [ { "type": "WRAPS", "target": "logging.Logger" } ], "children": [ { "name": "belief_scope", "type": "Function", "start_line": 20, "end_line": 34, "tags": { "PURPOSE": "Context manager for belief state logging to maintain execution coherence.", "PRE": "scope_id must be a string.", "POST": "Entry and exit actions are logged.", "PARAM": "scope_id (str) - Identifier for the logical scope." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "SupersetLogger", "type": "Class", "start_line": 36, "end_line": 154, "tags": { "PURPOSE": "\u041e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 `logging.Logger`, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0433\u0435\u0440\u043e\u0432." }, "relations": [ { "type": "WRAPS", "target": "logging.Logger" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 40, "end_line": 74, "tags": { "PURPOSE": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043b\u043e\u0433\u0433\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0438/\u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438.", "PRE": "\u0415\u0441\u043b\u0438 log_dir \u0443\u043a\u0430\u0437\u0430\u043d, \u043f\u0443\u0442\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c (\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c).", "POST": "`self.logger` \u0433\u043e\u0442\u043e\u0432 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.", "PARAM": "console (bool) - \u0424\u043b\u0430\u0433 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_log", "type": "Function", "start_line": 76, "end_line": 88, "tags": { "PURPOSE": "(Helper) \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.", "PRE": "level_method \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043b\u043e\u0433\u0433\u0435\u0440\u0430. msg must be a string.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043b\u043e\u0433.", "PARAM": "exc_info (bool) - \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "info", "type": "Function", "start_line": 90, "end_line": 97, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f INFO.", "PRE": "msg \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f INFO \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "debug", "type": "Function", "start_line": 99, "end_line": 106, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f DEBUG.", "PRE": "msg \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f DEBUG \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "warning", "type": "Function", "start_line": 108, "end_line": 115, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f WARNING.", "PRE": "msg \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f WARNING \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "error", "type": "Function", "start_line": 117, "end_line": 124, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f ERROR.", "PRE": "msg \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f ERROR \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "critical", "type": "Function", "start_line": 126, "end_line": 133, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f CRITICAL.", "PRE": "msg \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f CRITICAL \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "exception", "type": "Function", "start_line": 135, "end_line": 142, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f ERROR \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0441\u0442\u0435\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.", "PRE": "msg \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0441 traceback \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "belief_scope", "type": "Method", "start_line": 144, "end_line": 152, "tags": { "PURPOSE": "Instance method wrapper for belief_scope context manager.", "PRE": "scope_id must be a string.", "POST": "Enters the belief scope." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils.fileio", "type": "Module", "start_line": 1, "end_line": 507, "tags": { "SEMANTICS": "file, io, zip, yaml, temp, archive, utility", "PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0430\u0440\u0445\u0438\u0432\u0430\u043c\u0438 ZIP, \u0444\u0430\u0439\u043b\u0430\u043c\u0438 YAML \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439.", "LAYER": "Infra", "PUBLIC_API": "create_temp_file, remove_empty_directories, read_dashboard_from_disk, calculate_crc32, RetentionPolicy, archive_exports, save_and_unpack_dashboard, update_yamls, create_dashboard_export, sanitize_filename, get_filename_from_headers, consolidate_archive_folders" }, "relations": [ { "type": "DEPENDS_ON", "target": "superset_tool.exceptions" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils.logger" }, { "type": "DEPENDS_ON", "target": "pyyaml" } ], "children": [ { "name": "create_temp_file", "type": "Function", "start_line": 29, "end_line": 70, "tags": { "PURPOSE": "\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c.", "PRE": "suffix \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0439 \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430.", "POST": "\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u043f\u0443\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d; \u0440\u0435\u0441\u0443\u0440\u0441 \u0443\u0434\u0430\u043b\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.", "YIELDS": "Path - \u041f\u0443\u0442\u044c \u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443.", "THROW": "IOError - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "remove_empty_directories", "type": "Function", "start_line": 72, "end_line": 97, "tags": { "PURPOSE": "\u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438.", "PRE": "root_dir \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.", "POST": "\u0412\u0441\u0435 \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.", "RETURN": "int - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "read_dashboard_from_disk", "type": "Function", "start_line": 99, "end_line": 117, "tags": { "PURPOSE": "\u0427\u0438\u0442\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0434\u0438\u0441\u043a\u0430.", "PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.", "RETURN": "Tuple[bytes, str] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430).", "THROW": "FileNotFoundError - \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "calculate_crc32", "type": "Function", "start_line": 119, "end_line": 132, "tags": { "PURPOSE": "\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 CRC32 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430.", "PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Path \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 8-\u0437\u043d\u0430\u0447\u043d\u0443\u044e hex-\u0441\u0442\u0440\u043e\u043a\u0443 CRC32.", "PARAM": "file_path (Path) - \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443.", "RETURN": "str - 8-\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 CRC32.", "THROW": "IOError - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "RetentionPolicy", "type": "DataClass", "start_line": 135, "end_line": 142, "tags": { "PURPOSE": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0432\u043e\u0432 (\u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435, \u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u044b\u0435, \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u044b\u0435)." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "archive_exports", "type": "Function", "start_line": 145, "end_line": 228, "tags": { "PURPOSE": "\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0440\u0445\u0438\u0432\u043e\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e.", "PRE": "output_dir \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.", "POST": "\u0421\u0442\u0430\u0440\u044b\u0435 \u0438\u043b\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0430\u0440\u0445\u0438\u0432\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430." }, "relations": [ { "type": "CALLS", "target": "apply_retention_policy" }, { "type": "CALLS", "target": "calculate_crc32" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "apply_retention_policy", "type": "Function", "start_line": 230, "end_line": 264, "tags": { "PURPOSE": "(Helper) \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u0442\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c.", "PRE": "files_with_dates is a list of (Path, date) tuples.", "POST": "Returns a set of files to keep.", "PARAM": "logger (SupersetLogger) - \u041b\u043e\u0433\u0433\u0435\u0440.", "RETURN": "set - \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0443\u0442\u0435\u0439 \u043a \u0444\u0430\u0439\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "save_and_unpack_dashboard", "type": "Function", "start_line": 266, "end_line": 297, "tags": { "PURPOSE": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e.", "PRE": "zip_content \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0433\u043e ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.", "POST": "ZIP-\u0444\u0430\u0439\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d, \u0438 \u0435\u0441\u043b\u0438 unpack=True, \u043e\u043d \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u0432 output_dir.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.", "RETURN": "Tuple[Path, Optional[Path]] - \u041f\u0443\u0442\u044c \u043a ZIP-\u0444\u0430\u0439\u043b\u0443 \u0438, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, \u043f\u0443\u0442\u044c \u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439.", "THROW": "InvalidZipFormatError - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 ZIP." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_yamls", "type": "Function", "start_line": 299, "end_line": 321, "tags": { "PURPOSE": "\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 YAML-\u0444\u0430\u0439\u043b\u0430\u0445, \u0437\u0430\u043c\u0435\u043d\u044f\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f regex.", "PRE": "path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439.", "POST": "\u0412\u0441\u0435 YAML \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c.", "THROW": "FileNotFoundError - \u0415\u0441\u043b\u0438 `path` \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430." }, "relations": [ { "type": "CALLS", "target": "_update_yaml_file" } ], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_update_yaml_file", "type": "Function", "start_line": 323, "end_line": 390, "tags": { "PURPOSE": "(Helper) \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d YAML \u0444\u0430\u0439\u043b.", "PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Path \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 YAML \u0444\u0430\u0439\u043b\u0443.", "POST": "\u0424\u0430\u0439\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c \u0438\u043b\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e.", "PARAM": "logger (SupersetLogger) - \u041b\u043e\u0433\u0433\u0435\u0440." }, "relations": [], "children": [ { "name": "replacer", "type": "Function", "start_line": 371, "end_line": 381, "tags": { "PURPOSE": "\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043c\u0435\u043d\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438.", "PRE": "match \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0438." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "create_dashboard_export", "type": "Function", "start_line": 392, "end_line": 420, "tags": { "PURPOSE": "\u0421\u043e\u0437\u0434\u0430\u0435\u0442 ZIP-\u0430\u0440\u0445\u0438\u0432 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439.", "PRE": "source_paths \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u0442\u0438.", "POST": "ZIP-\u0430\u0440\u0445\u0438\u0432 \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u043e \u043f\u0443\u0442\u0438 zip_path.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.", "RETURN": "bool - `True` \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0445\u0435, `False` \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "sanitize_filename", "type": "Function", "start_line": 422, "end_line": 432, "tags": { "PURPOSE": "\u041e\u0447\u0438\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.", "PRE": "filename \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.", "PARAM": "filename (str) - \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.", "RETURN": "str - \u041e\u0447\u0438\u0449\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_filename_from_headers", "type": "Function", "start_line": 434, "end_line": 447, "tags": { "PURPOSE": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 HTTP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 'Content-Disposition'.", "PRE": "headers \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 None, \u0435\u0441\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.", "PARAM": "headers (dict) - \u0421\u043b\u043e\u0432\u0430\u0440\u044c HTTP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.", "RETURN": "Optional[str] - \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 or `None`." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "consolidate_archive_folders", "type": "Function", "start_line": 449, "end_line": 505, "tags": { "PURPOSE": "\u041a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043b\u0430\u0433\u0430 \u0432 \u0438\u043c\u0435\u043d\u0438.", "PRE": "root_directory \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Path \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.", "POST": "\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u0443.", "THROW": "TypeError, ValueError - \u0415\u0441\u043b\u0438 `root_directory` \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d.", "PARAM": "logger (Optional[SupersetLogger]) - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043b\u043e\u0433\u0433\u0435\u0440\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils.network", "type": "Module", "start_line": 1, "end_line": 265, "tags": { "SEMANTICS": "network, http, client, api, requests, session, authentication", "PURPOSE": "\u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e HTTP-\u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Superset API, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0435\u0439, retry-\u043b\u043e\u0433\u0438\u043a\u0443 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a.", "LAYER": "Infra", "PUBLIC_API": "APIClient" }, "relations": [ { "type": "DEPENDS_ON", "target": "superset_tool.exceptions" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils.logger" }, { "type": "DEPENDS_ON", "target": "requests" } ], "children": [ { "name": "APIClient", "type": "Class", "start_line": 25, "end_line": 263, "tags": { "PURPOSE": "\u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 HTTP-\u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u0438, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 30, "end_line": 49, "tags": { "PURPOSE": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 API \u043a\u043b\u0438\u0435\u043d\u0442 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u0438 \u043b\u043e\u0433\u0433\u0435\u0440\u043e\u043c.", "PARAM": "logger (Optional[SupersetLogger]) - \u041b\u043e\u0433\u0433\u0435\u0440.", "PRE": "config must contain 'base_url' and 'auth'.", "POST": "APIClient instance is initialized with a session." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_init_session", "type": "Function", "start_line": 51, "end_line": 68, "tags": { "PURPOSE": "\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 `requests.Session` \u0441 retry-\u043b\u043e\u0433\u0438\u043a\u043e\u0439.", "PRE": "self.request_settings must be initialized.", "POST": "Returns a configured requests.Session instance.", "RETURN": "requests.Session - \u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "authenticate", "type": "Function", "start_line": 70, "end_line": 97, "tags": { "PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 Superset API \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 access \u0438 CSRF \u0442\u043e\u043a\u0435\u043d\u044b.", "PRE": "self.auth and self.base_url must be valid.", "POST": "`self._tokens` \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d, `self._authenticated` \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 `True`.", "RETURN": "Dict[str, str] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438.", "THROW": "AuthenticationError, NetworkError - \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "headers", "type": "Function", "start_line": 100, "end_line": 113, "tags": { "PURPOSE": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.", "PRE": "APIClient is initialized and authenticated or can be authenticated.", "POST": "Returns headers including auth tokens." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "request", "type": "Function", "start_line": 115, "end_line": 139, "tags": { "PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043a API.", "PARAM": "raw_response (bool) - \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043b\u0438 \u0441\u044b\u0440\u043e\u0439 \u043e\u0442\u0432\u0435\u0442.", "PRE": "method and endpoint must be strings.", "POST": "Returns response content or raw Response object.", "RETURN": "`requests.Response` \u0435\u0441\u043b\u0438 `raw_response=True`, \u0438\u043d\u0430\u0447\u0435 `dict`.", "THROW": "SupersetAPIError, NetworkError \u0438 \u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u044b." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_handle_http_error", "type": "Function", "start_line": 141, "end_line": 154, "tags": { "PURPOSE": "(Helper) \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 HTTP \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.", "PARAM": "endpoint (str) - \u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442.", "PRE": "e must be a valid HTTPError with a response.", "POST": "Raises a specific SupersetAPIError or subclass." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_handle_network_error", "type": "Function", "start_line": 156, "end_line": 168, "tags": { "PURPOSE": "(Helper) \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 `NetworkError`.", "PARAM": "url (str) - URL.", "PRE": "e must be a RequestException.", "POST": "Raises a NetworkError." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "upload_file", "type": "Function", "start_line": 170, "end_line": 197, "tags": { "PURPOSE": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 multipart/form-data.", "PARAM": "timeout (Optional[int]) - \u0422\u0430\u0439\u043c\u0430\u0443\u0442.", "PRE": "file_info must contain 'file_obj' and 'file_name'.", "POST": "File is uploaded and response returned.", "RETURN": "\u041e\u0442\u0432\u0435\u0442 API \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044f.", "THROW": "SupersetAPIError, NetworkError, TypeError." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_perform_upload", "type": "Function", "start_line": 199, "end_line": 226, "tags": { "PURPOSE": "(Helper) \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 POST \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c.", "PARAM": "timeout (Optional[int]) - \u0422\u0430\u0439\u043c\u0430\u0443\u0442.", "PRE": "url, files, and headers must be provided.", "POST": "POST request is performed and JSON response returned.", "RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetch_paginated_count", "type": "Function", "start_line": 228, "end_line": 240, "tags": { "PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.", "PARAM": "count_field (str) - \u041f\u043e\u043b\u0435 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c.", "PRE": "query_params must be a dictionary.", "POST": "Returns total count of items.", "RETURN": "int - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetch_paginated_data", "type": "Function", "start_line": 242, "end_line": 261, "tags": { "PURPOSE": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u0433\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430.", "PARAM": "pagination_options (Dict[str, Any]) - \u041e\u043f\u0446\u0438\u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.", "PRE": "pagination_options must contain 'base_query', 'total_count', 'results_field'.", "POST": "Returns all items across all pages.", "RETURN": "List[Any] - \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils.whiptail_fallback", "type": "Module", "start_line": 1, "end_line": 157, "tags": { "SEMANTICS": "ui, fallback, console, utility, interactive", "PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u043e\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0439 UI-fallback \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432, \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044f `whiptail` \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0433\u0434\u0435 \u043e\u043d \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.", "LAYER": "UI", "PUBLIC_API": "menu, checklist, yesno, msgbox, inputbox, gauge" }, "relations": [], "children": [ { "name": "menu", "type": "Function", "start_line": 14, "end_line": 33, "tags": { "PURPOSE": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.", "PARAM": "choices (List[str]) - \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430.", "PRE": "choices must be a non-empty list of strings.", "POST": "Returns a tuple with return code and selected choice.", "RETURN": "Tuple[int, Optional[str]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442). rc=0 - \u0443\u0441\u043f\u0435\u0445." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "checklist", "type": "Function", "start_line": 35, "end_line": 56, "tags": { "PURPOSE": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430.", "PARAM": "options (List[Tuple[str, str]]) - \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043c\u0435\u0442\u043a\u0430).", "PRE": "options must be a list of (value, label) tuples.", "POST": "Returns a list of selected values.", "RETURN": "Tuple[int, List[str]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439)." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "yesno", "type": "Function", "start_line": 58, "end_line": 69, "tags": { "PURPOSE": "\u0417\u0430\u0434\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u0434\u0430/\u043d\u0435\u0442.", "PARAM": "question (str) - \u0412\u043e\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.", "PRE": "question must be a string.", "POST": "Returns boolean based on user input.", "RETURN": "bool - `True`, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u043b \"\u0434\u0430\"." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "msgbox", "type": "Function", "start_line": 71, "end_line": 80, "tags": { "PURPOSE": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.", "PARAM": "msg (str) - \u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.", "PRE": "msg must be a string.", "POST": "Message is printed to console." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "inputbox", "type": "Function", "start_line": 82, "end_line": 94, "tags": { "PURPOSE": "\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u0432\u043e\u0434.", "PARAM": "prompt (str) - \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0432\u0432\u043e\u0434\u0443.", "PRE": "prompt must be a string.", "POST": "Returns user input string.", "RETURN": "Tuple[int, Optional[str]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430)." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_ConsoleGauge", "type": "Class", "start_line": 96, "end_line": 144, "tags": { "PURPOSE": "\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 `whiptail gauge` \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 99, "end_line": 106, "tags": { "PURPOSE": "Initializes the gauge.", "PRE": "title must be a string.", "POST": "Instance initialized." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "__enter__", "type": "Function", "start_line": 108, "end_line": 116, "tags": { "PURPOSE": "Enters the context.", "PRE": "Instance initialized.", "POST": "Header printed, returns self." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "__exit__", "type": "Function", "start_line": 118, "end_line": 125, "tags": { "PURPOSE": "Exits the context.", "PRE": "Context entered.", "POST": "Newline printed." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "set_text", "type": "Function", "start_line": 127, "end_line": 134, "tags": { "PURPOSE": "Sets the gauge text.", "PRE": "txt must be a string.", "POST": "Text written to stdout." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "set_percent", "type": "Function", "start_line": 136, "end_line": 143, "tags": { "PURPOSE": "Sets the gauge percentage.", "PRE": "percent must be an integer.", "POST": "Percentage written to stdout." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "gauge", "type": "Function", "start_line": 146, "end_line": 155, "tags": { "PURPOSE": "\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 `_ConsoleGauge`.", "PRE": "title must be a string.", "POST": "Returns an instance of _ConsoleGauge.", "PARAM": "title (str) - \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430.", "RETURN": "_ConsoleGauge - \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils.dataset_mapper", "type": "Module", "start_line": 1, "end_line": 240, "tags": { "SEMANTICS": "dataset, mapping, postgresql, xlsx, superset", "PURPOSE": "\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 (verbose_map) \u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u0445 Superset, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044f \u0438\u0445 \u0438\u0437 PostgreSQL \u0438\u043b\u0438 XLSX-\u0444\u0430\u0439\u043b\u043e\u0432.", "LAYER": "Domain", "PUBLIC_API": "DatasetMapper" }, "relations": [ { "type": "DEPENDS_ON", "target": "superset_tool.client" }, { "type": "DEPENDS_ON", "target": "pandas" }, { "type": "DEPENDS_ON", "target": "psycopg2" } ], "children": [ { "name": "DatasetMapper", "type": "Class", "start_line": 20, "end_line": 238, "tags": { "PURPOSE": "\u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f verbose_map \u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u0445 Superset." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 23, "end_line": 29, "tags": { "PURPOSE": "Initializes the mapper.", "PRE": "logger \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c SupersetLogger.", "POST": "\u041e\u0431\u044a\u0435\u043a\u0442 DatasetMapper \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "get_postgres_comments", "type": "Function", "start_line": 31, "end_line": 94, "tags": { "PURPOSE": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 PostgreSQL.", "PRE": "table_name \u0438 table_schema \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447\u0438 - \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f - \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u0437 \u0411\u0414.", "THROW": "Exception - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0411\u0414.", "PARAM": "table_schema (str) - \u0421\u0445\u0435\u043c\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.", "RETURN": "Dict[str, str] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 \u043a \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "load_excel_mappings", "type": "Function", "start_line": 96, "end_line": 114, "tags": { "PURPOSE": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0438 'column_name' -> 'column_comment' \u0438\u0437 XLSX \u0444\u0430\u0439\u043b\u0430.", "PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 XLSX \u0444\u0430\u0439\u043b.", "POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430\u043c\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430.", "THROW": "Exception - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430.", "PARAM": "file_path (str) - \u041f\u0443\u0442\u044c \u043a XLSX \u0444\u0430\u0439\u043b\u0443.", "RETURN": "Dict[str, str] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430\u043c\u0438." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "run_mapping", "type": "Function", "start_line": 116, "end_line": 237, "tags": { "PURPOSE": "\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f verbose_map \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0432 Superset.", "PRE": "dataset_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c ID \u0432 Superset.", "POST": "\u0415\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0432 Superset \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 API.", "PARAM": "table_schema (Optional[str]) - \u0421\u0445\u0435\u043c\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 PostgreSQL." }, "relations": [ { "type": "CALLS", "target": "self.get_postgres_comments" }, { "type": "CALLS", "target": "self.load_excel_mappings" }, { "type": "CALLS", "target": "superset_client.get_dataset" }, { "type": "CALLS", "target": "superset_client.update_dataset" } ], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "superset_tool.utils", "type": "Module", "start_line": 1, "end_line": 5, "tags": { "SEMANTICS": "package, utils", "PURPOSE": "Utility package for superset_tool.", "LAYER": "Infra" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "main", "type": "Module", "start_line": 1, "end_line": 18, "tags": { "SEMANTICS": "entrypoint, svelte, init", "PURPOSE": "Entry point for the Svelte application.", "LAYER": "UI-Entry" }, "relations": [], "children": [ { "name": "app_instance", "type": "Data", "start_line": 9, "end_line": 15, "tags": { "PURPOSE": "Initialized Svelte app instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "App", "type": "Component", "start_line": 1, "end_line": 117, "tags": { "SEMANTICS": "main, entrypoint, layout, navigation", "PURPOSE": "The root component of the frontend application. Manages navigation and layout.", "LAYER": "UI", "RELATION": "DEPENDS_ON -> frontend/src/lib/stores.js", "INVARIANT": "Navigation state must be persisted in the currentPage store." }, "relations": [], "children": [ { "name": "handleFormSubmit", "type": "Function", "start_line": 24, "end_line": 44, "tags": { "PURPOSE": "Handles form submission for task creation.", "PRE": "event.detail contains form parameters.", "POST": "Task is created and selectedTask is updated.", "PARAM": "{CustomEvent} event - The submit event from DynamicForm." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "navigate", "type": "Function", "start_line": 46, "end_line": 63, "tags": { "PURPOSE": "Changes the current page and resets state.", "PRE": "Target page name is provided.", "POST": "currentPage store is updated and selection state is reset.", "PARAM": "{string} page - Target page name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "stores_module", "type": "Module", "start_line": 1, "end_line": 70, "tags": { "SEMANTICS": "state, stores, svelte, plugins, tasks", "PURPOSE": "Global state management using Svelte stores.", "LAYER": "UI-State" }, "relations": [], "children": [ { "name": "plugins", "type": "Data", "start_line": 9, "end_line": 12, "tags": { "PURPOSE": "Store for the list of available plugins." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "tasks", "type": "Data", "start_line": 14, "end_line": 17, "tags": { "PURPOSE": "Store for the list of tasks." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "selectedPlugin", "type": "Data", "start_line": 19, "end_line": 22, "tags": { "PURPOSE": "Store for the currently selected plugin." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "selectedTask", "type": "Data", "start_line": 24, "end_line": 27, "tags": { "PURPOSE": "Store for the currently selected task." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "currentPage", "type": "Data", "start_line": 29, "end_line": 32, "tags": { "PURPOSE": "Store for the current page." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "taskLogs", "type": "Data", "start_line": 34, "end_line": 37, "tags": { "PURPOSE": "Store for the logs of the currently selected task." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchPlugins", "type": "Function", "start_line": 39, "end_line": 53, "tags": { "PURPOSE": "Fetches plugins from the API and updates the plugins store.", "PRE": "None.", "POST": "plugins store is updated with data from the API." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchTasks", "type": "Function", "start_line": 55, "end_line": 69, "tags": { "PURPOSE": "Fetches tasks from the API and updates the tasks store.", "PRE": "None.", "POST": "tasks store is updated with data from the API." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "toasts_module", "type": "Module", "start_line": 1, "end_line": 38, "tags": { "SEMANTICS": "notification, toast, feedback, state", "PURPOSE": "Manages toast notifications using a Svelte writable store.", "LAYER": "UI-State" }, "relations": [], "children": [ { "name": "toasts", "type": "Data", "start_line": 8, "end_line": 11, "tags": { "PURPOSE": "Writable store containing the list of active toasts." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "addToast", "type": "Function", "start_line": 13, "end_line": 26, "tags": { "PURPOSE": "Adds a new toast message.", "PRE": "message string is provided.", "POST": "New toast is added to the store and scheduled for removal.", "PARAM": "duration (number) - Duration in ms before the toast is removed." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "removeToast", "type": "Function", "start_line": 28, "end_line": 37, "tags": { "PURPOSE": "Removes a toast message by ID.", "PRE": "id is provided.", "POST": "Toast is removed from the store.", "PARAM": "id (string) - The ID of the toast to remove." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "api_module", "type": "Module", "start_line": 1, "end_line": 130, "tags": { "SEMANTICS": "api, client, fetch, rest", "PURPOSE": "Handles all communication with the backend API.", "LAYER": "Infra-API" }, "relations": [], "children": [ { "name": "getWsUrl", "type": "Function", "start_line": 11, "end_line": 26, "tags": { "PURPOSE": "Returns the WebSocket URL for a specific task, with fallback logic.", "PRE": "taskId is provided.", "POST": "Returns valid WebSocket URL string.", "PARAM": "taskId (string) - The ID of the task.", "RETURN": "string - The WebSocket URL." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchApi", "type": "Function", "start_line": 28, "end_line": 48, "tags": { "PURPOSE": "Generic GET request wrapper.", "PRE": "endpoint string is provided.", "POST": "Returns Promise resolving to JSON data or throws on error.", "PARAM": "endpoint (string) - API endpoint.", "RETURN": "Promise - JSON response." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "postApi", "type": "Function", "start_line": 50, "end_line": 77, "tags": { "PURPOSE": "Generic POST request wrapper.", "PRE": "endpoint and body are provided.", "POST": "Returns Promise resolving to JSON data or throws on error.", "PARAM": "body (object) - Request payload.", "RETURN": "Promise - JSON response." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "requestApi", "type": "Function", "start_line": 79, "end_line": 107, "tags": { "PURPOSE": "Generic request wrapper.", "PRE": "endpoint and method are provided.", "POST": "Returns Promise resolving to JSON data or throws on error." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "api", "type": "Data", "start_line": 109, "end_line": 128, "tags": { "PURPOSE": "API client object with specific methods." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "selectPlugin", "type": "Function", "start_line": 17, "end_line": 30, "tags": { "PURPOSE": "Handles plugin selection and navigation.", "PRE": "plugin object must be provided.", "POST": "Navigates to migration or sets selectedPlugin store." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleFormSubmit", "type": "Function", "start_line": 32, "end_line": 50, "tags": { "PURPOSE": "Handles task creation from dynamic form submission.", "PRE": "event.detail must contain task parameters.", "POST": "Task is created via API and selectedTask store is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "load", "type": "Function", "start_line": 3, "end_line": 23, "tags": { "PURPOSE": "Loads initial plugin data for the dashboard.", "PRE": "None.", "POST": "Returns an object with plugins or an error message.", "TYPE": "{import('./$types').PageLoad} */" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "loadInitialData", "type": "Function", "start_line": 16, "end_line": 36, "tags": { "PURPOSE": "Loads tasks and environments on page initialization.", "PRE": "API must be reachable.", "POST": "tasks and environments variables are populated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "refreshTasks", "type": "Function", "start_line": 38, "end_line": 54, "tags": { "PURPOSE": "Periodically refreshes the task list.", "PRE": "API must be reachable.", "POST": "tasks variable is updated if data is valid." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleSelectTask", "type": "Function", "start_line": 56, "end_line": 64, "tags": { "PURPOSE": "Updates the selected task ID when a task is clicked.", "PRE": "event.detail.id must be provided.", "POST": "selectedTaskId is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleRunBackup", "type": "Function", "start_line": 66, "end_line": 87, "tags": { "PURPOSE": "Triggers a manual backup task for the selected environment.", "PRE": "selectedEnvId must not be empty.", "POST": "Backup task is created and task list is refreshed." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "MigrationDashboard", "type": "Component", "start_line": 1, "end_line": 418, "tags": { "SEMANTICS": "migration, dashboard, environment, selection, database-replacement", "PURPOSE": "Main dashboard for configuring and starting migrations.", "LAYER": "Page", "RELATION": "USES -> EnvSelector", "INVARIANT": "Migration cannot start without source and target environments." }, "relations": [], "children": [ { "name": "fetchEnvironments", "type": "Function", "start_line": 51, "end_line": 68, "tags": { "PURPOSE": "Fetches the list of environments from the API.", "PRE": "None.", "POST": "environments state is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchDashboards", "type": "Function", "start_line": 70, "end_line": 88, "tags": { "PURPOSE": "Fetches dashboards for the selected source environment.", "PRE": "envId is a valid environment ID.", "PARAM": "envId The environment ID.", "POST": "dashboards state is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchDatabases", "type": "Function", "start_line": 95, "end_line": 130, "tags": { "PURPOSE": "Fetches databases from both environments and gets suggestions.", "PRE": "sourceEnvId and targetEnvId must be set.", "POST": "sourceDatabases, targetDatabases, mappings, and suggestions are updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleMappingUpdate", "type": "Function", "start_line": 132, "end_line": 167, "tags": { "PURPOSE": "Saves a mapping to the backend.", "PRE": "event.detail contains sourceUuid and targetUuid.", "POST": "Mapping is saved and local mappings list is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleViewLogs", "type": "Function", "start_line": 169, "end_line": 179, "tags": { "PURPOSE": "Opens the log viewer for a specific task.", "PRE": "event.detail contains task object.", "POST": "logViewer state updated and showLogViewer set to true." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handlePasswordPrompt", "type": "Function", "start_line": 181, "end_line": 203, "tags": { "PURPOSE": "Reactive logic to show password prompt when a task is awaiting input.", "PRE": "selectedTask status is AWAITING_INPUT.", "POST": "showPasswordPrompt set to true with request data." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleResumeMigration", "type": "Function", "start_line": 205, "end_line": 223, "tags": { "PURPOSE": "Resumes a migration task with provided passwords.", "PRE": "event.detail contains passwords.", "POST": "resumeTask is called and showPasswordPrompt is hidden on success." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "startMigration", "type": "Function", "start_line": 225, "end_line": 292, "tags": { "PURPOSE": "Starts the migration process.", "PRE": "sourceEnvId and targetEnvId must be set and different.", "POST": "Migration task is started and selectedTask is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "MappingManagement", "type": "Component", "start_line": 1, "end_line": 192, "tags": { "SEMANTICS": "mapping, management, database, fuzzy-matching", "PURPOSE": "Page for managing database mappings between environments.", "LAYER": "Page", "RELATION": "USES -> MappingTable", "INVARIANT": "Mappings are saved to the backend for persistence." }, "relations": [], "children": [ { "name": "fetchEnvironments", "type": "Function", "start_line": 33, "end_line": 48, "tags": { "PURPOSE": "Fetches the list of environments.", "PRE": "None.", "POST": "environments array is populated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchDatabases", "type": "Function", "start_line": 52, "end_line": 88, "tags": { "PURPOSE": "Fetches databases from both environments and gets suggestions.", "PRE": "sourceEnvId and targetEnvId must be set.", "POST": "sourceDatabases, targetDatabases, mappings, and suggestions are updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleUpdate", "type": "Function", "start_line": 90, "end_line": 126, "tags": { "PURPOSE": "Saves a mapping to the backend.", "PRE": "event.detail contains sourceUuid and targetUuid.", "POST": "Mapping is saved and local mappings list is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "SearchPage", "type": "Component", "start_line": 1, "end_line": 26, "tags": { "SEMANTICS": "search, page, tool", "PURPOSE": "Page for the dataset search tool.", "LAYER": "UI" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "MapperPage", "type": "Component", "start_line": 1, "end_line": 26, "tags": { "SEMANTICS": "mapper, page, tool", "PURPOSE": "Page for the dataset column mapper tool.", "LAYER": "UI" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "DebugPage", "type": "Component", "start_line": 1, "end_line": 26, "tags": { "SEMANTICS": "debug, page, tool", "PURPOSE": "Page for system diagnostics and debugging.", "LAYER": "UI" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleSaveGlobal", "type": "Function", "start_line": 24, "end_line": 40, "tags": { "PURPOSE": "Saves global application settings.", "PRE": "settings.settings must contain valid configuration.", "POST": "Global settings are updated via API." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleAddOrUpdateEnv", "type": "Function", "start_line": 42, "end_line": 68, "tags": { "PURPOSE": "Adds a new environment or updates an existing one.", "PRE": "newEnv must contain valid environment details.", "POST": "Environment is saved and page is reloaded to reflect changes." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleDeleteEnv", "type": "Function", "start_line": 70, "end_line": 89, "tags": { "PURPOSE": "Deletes a Superset environment.", "PRE": "id must be a valid environment ID.", "POST": "Environment is removed and page is reloaded." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleTestEnv", "type": "Function", "start_line": 91, "end_line": 112, "tags": { "PURPOSE": "Tests the connection to a Superset environment.", "PRE": "id must be a valid environment ID.", "POST": "Displays success or error toast based on connection result." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "editEnv", "type": "Function", "start_line": 114, "end_line": 123, "tags": { "PURPOSE": "Populates the environment form for editing.", "PRE": "env object must be provided.", "POST": "newEnv and editingEnvId are updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resetEnvForm", "type": "Function", "start_line": 125, "end_line": 141, "tags": { "PURPOSE": "Resets the environment creation/edit form to default state.", "PRE": "None.", "POST": "newEnv is cleared and editingEnvId is set to null." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "load", "type": "Function", "start_line": 3, "end_line": 29, "tags": { "PURPOSE": "Loads application settings and environment list.", "PRE": "API must be reachable.", "POST": "Returns settings object or default values on error.", "TYPE": "{import('./$types').PageLoad} */" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "ConnectionsSettingsPage", "type": "Component", "start_line": 1, "end_line": 40, "tags": { "SEMANTICS": "settings, connections, page", "PURPOSE": "Page for managing database connection configurations.", "LAYER": "UI" }, "relations": [], "children": [ { "name": "handleSuccess", "type": "Function", "start_line": 13, "end_line": 23, "tags": { "PURPOSE": "Refreshes the connection list after a successful creation.", "PRE": "listComponent must be bound.", "POST": "Triggers the fetchConnections method on the list component." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Dashboard", "type": "Component", "start_line": 1, "end_line": 64, "tags": { "SEMANTICS": "dashboard, plugins, tools, list", "PURPOSE": "Displays the list of available plugins and allows selecting one.", "LAYER": "UI", "RELATION": "DEPENDS_ON -> frontend/src/lib/stores.js", "PROPS": "None", "EVENTS": "None" }, "relations": [], "children": [ { "name": "onMount", "type": "Function", "start_line": 17, "end_line": 27, "tags": { "PURPOSE": "Fetch plugins when the component mounts.", "PRE": "Component is mounting.", "POST": "plugins store is populated with available tools." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "selectPlugin", "type": "Function", "start_line": 29, "end_line": 40, "tags": { "PURPOSE": "Selects a plugin to display its form.", "PRE": "plugin object is provided.", "POST": "selectedPlugin store is updated.", "PARAM": "{Object} plugin - The plugin object to select." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Settings", "type": "Component", "start_line": 1, "end_line": 347, "tags": { "SEMANTICS": "settings, ui, configuration", "PURPOSE": "The main settings page for the application, allowing management of environments and global settings.", "LAYER": "UI", "RELATION": "USES -> stores.js", "PROPS": "None", "EVENTS": "None", "INVARIANT": "Settings changes must be saved to the backend." }, "relations": [], "children": [ { "name": "loadSettings", "type": "Function", "start_line": 50, "end_line": 67, "tags": { "PURPOSE": "Loads settings from the backend.", "PRE": "Component mounted or refresh requested.", "POST": "settings object is populated with backend data." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleSaveGlobal", "type": "Function", "start_line": 69, "end_line": 86, "tags": { "PURPOSE": "Saves global settings to the backend.", "PRE": "settings.settings contains valid configuration.", "POST": "Backend global settings are updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleAddOrUpdateEnv", "type": "Function", "start_line": 88, "end_line": 112, "tags": { "PURPOSE": "Adds or updates an environment.", "PRE": "newEnv contains valid environment details.", "POST": "Environment list is updated on backend and reloaded locally." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleDeleteEnv", "type": "Function", "start_line": 114, "end_line": 135, "tags": { "PURPOSE": "Deletes an environment.", "PRE": "id of environment to delete is provided.", "POST": "Environment is removed from backend and list is reloaded.", "PARAM": "{string} id - The ID of the environment to delete." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleTestEnv", "type": "Function", "start_line": 137, "end_line": 160, "tags": { "PURPOSE": "Tests the connection to an environment.", "PRE": "Environment ID is valid.", "POST": "Connection test result is displayed via toast.", "PARAM": "{string} id - The ID of the environment to test." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "editEnv", "type": "Function", "start_line": 162, "end_line": 173, "tags": { "PURPOSE": "Sets the form to edit an existing environment.", "PRE": "env object is provided.", "POST": "newEnv is populated with env data and editingEnvId is set.", "PARAM": "{Object} env - The environment object to edit." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resetEnvForm", "type": "Function", "start_line": 175, "end_line": 196, "tags": { "PURPOSE": "Resets the environment form.", "PRE": "None.", "POST": "newEnv is reset to initial state and editingEnvId is cleared." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "getConnections", "type": "Function", "start_line": 7, "end_line": 23, "tags": { "PURPOSE": "Fetch a list of saved connections.", "PRE": "None.", "POST": "Returns a promise resolving to an array of connections.", "RETURNS": "{Promise} List of connections." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "createConnection", "type": "Function", "start_line": 25, "end_line": 50, "tags": { "PURPOSE": "Create a new connection configuration.", "PRE": "connectionData must be a valid object.", "POST": "Returns a promise resolving to the created connection.", "PARAM": "{Object} connectionData - The connection data.", "RETURNS": "{Promise} The created connection instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "deleteConnection", "type": "Function", "start_line": 52, "end_line": 70, "tags": { "PURPOSE": "Delete a connection configuration.", "PRE": "connectionId must be a valid string.", "POST": "Returns a promise that resolves when deletion is complete.", "PARAM": "{string} connectionId - The ID of the connection to delete." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "runTask", "type": "Function", "start_line": 7, "end_line": 33, "tags": { "PURPOSE": "Start a new task for a given plugin.", "PRE": "pluginId and params must be provided.", "POST": "Returns a promise resolving to the task instance.", "PARAM": "{Object} params - Parameters for the plugin.", "RETURNS": "{Promise} The created task instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getTaskStatus", "type": "Function", "start_line": 35, "end_line": 52, "tags": { "PURPOSE": "Fetch details for a specific task (to poll status or get result).", "PRE": "taskId must be provided.", "POST": "Returns a promise resolving to task details.", "PARAM": "{string} taskId - The ID of the task.", "RETURNS": "{Promise} Task details." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getTasks", "type": "Function", "start_line": 7, "end_line": 34, "tags": { "PURPOSE": "Fetch a list of tasks with pagination and optional status filter.", "PRE": "limit and offset are numbers.", "POST": "Returns a promise resolving to a list of tasks.", "PARAM": "{string|null} status - Filter by task status (optional).", "RETURNS": "{Promise} List of tasks." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getTask", "type": "Function", "start_line": 36, "end_line": 53, "tags": { "PURPOSE": "Fetch details for a specific task.", "PRE": "taskId must be provided.", "POST": "Returns a promise resolving to task details.", "PARAM": "{string} taskId - The ID of the task.", "RETURNS": "{Promise} Task details." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getTaskLogs", "type": "Function", "start_line": 55, "end_line": 75, "tags": { "PURPOSE": "Fetch logs for a specific task.", "PRE": "taskId must be provided.", "POST": "Returns a promise resolving to a list of log entries.", "PARAM": "{string} taskId - The ID of the task.", "RETURNS": "{Promise} List of log entries." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resumeTask", "type": "Function", "start_line": 77, "end_line": 103, "tags": { "PURPOSE": "Resume a task that is awaiting input (e.g., passwords).", "PRE": "taskId and passwords must be provided.", "POST": "Returns a promise resolving to the updated task object.", "PARAM": "{Object} passwords - Map of database names to passwords.", "RETURNS": "{Promise} Updated task object." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resolveTask", "type": "Function", "start_line": 105, "end_line": 131, "tags": { "PURPOSE": "Resolve a task that is awaiting mapping.", "PRE": "taskId and resolutionParams must be provided.", "POST": "Returns a promise resolving to the updated task object.", "PARAM": "{Object} resolutionParams - Resolution parameters.", "RETURNS": "{Promise} Updated task object." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "clearTasks", "type": "Function", "start_line": 133, "end_line": 156, "tags": { "PURPOSE": "Clear tasks based on status.", "PRE": "status is a string or null.", "POST": "Returns a promise that resolves when tasks are cleared.", "PARAM": "{string|null} status - Filter by task status (optional)." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "PasswordPrompt", "type": "Component", "start_line": 1, "end_line": 133, "tags": { "SEMANTICS": "password, prompt, modal, input, security", "PURPOSE": "A modal component to prompt the user for database passwords when a migration task is paused.", "LAYER": "UI", "RELATION": "EMITS -> resume, cancel" }, "relations": [], "children": [ { "name": "handleSubmit", "type": "Function", "start_line": 21, "end_line": 39, "tags": { "PURPOSE": "Validates and dispatches the passwords to resume the task.", "PRE": "All database passwords must be entered.", "POST": "'resume' event is dispatched with passwords." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleCancel", "type": "Function", "start_line": 41, "end_line": 49, "tags": { "PURPOSE": "Cancels the password prompt.", "PRE": "Modal is open.", "POST": "'cancel' event is dispatched and show is set to false." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "MappingTable", "type": "Component", "start_line": 1, "end_line": 98, "tags": { "SEMANTICS": "mapping, table, database, editor", "PURPOSE": "Displays and allows editing of database mappings.", "LAYER": "Feature", "RELATION": "BINDS_TO -> mappings state", "INVARIANT": "Each source database can be mapped to one target database." }, "relations": [], "children": [ { "name": "updateMapping", "type": "Function", "start_line": 25, "end_line": 34, "tags": { "PURPOSE": "Updates a mapping for a specific source database.", "PRE": "sourceUuid and targetUuid are provided.", "POST": "'update' event is dispatched." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getSuggestion", "type": "Function", "start_line": 36, "end_line": 45, "tags": { "PURPOSE": "Finds a suggestion for a source database.", "PRE": "sourceUuid is provided.", "POST": "Returns matching suggestion object or undefined." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskLogViewer", "type": "Component", "start_line": 1, "end_line": 183, "tags": { "SEMANTICS": "task, log, viewer, modal", "PURPOSE": "Displays detailed logs for a specific task in a modal.", "LAYER": "UI", "RELATION": "USES -> frontend/src/lib/api.js (inferred)" }, "relations": [], "children": [ { "name": "fetchLogs", "type": "Function", "start_line": 25, "end_line": 42, "tags": { "PURPOSE": "Fetches logs for the current task.", "PRE": "taskId must be set.", "POST": "logs array is updated with data from taskService." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "scrollToBottom", "type": "Function", "start_line": 44, "end_line": 55, "tags": { "PURPOSE": "Scrolls the log container to the bottom.", "PRE": "logContainer element must be bound.", "POST": "logContainer scrollTop is set to scrollHeight." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleScroll", "type": "Function", "start_line": 57, "end_line": 68, "tags": { "PURPOSE": "Updates auto-scroll preference based on scroll position.", "PRE": "logContainer scroll event fired.", "POST": "autoScroll boolean is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "close", "type": "Function", "start_line": 70, "end_line": 78, "tags": { "PURPOSE": "Closes the log viewer modal.", "PRE": "Modal is open.", "POST": "Modal is closed and close event is dispatched." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getLogLevelColor", "type": "Function", "start_line": 80, "end_line": 93, "tags": { "PURPOSE": "Returns the CSS color class for a given log level.", "PRE": "level string is provided.", "POST": "Returns tailwind color class string." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "onDestroy", "type": "Function", "start_line": 110, "end_line": 117, "tags": { "PURPOSE": "Cleans up the polling interval.", "PRE": "Component is being destroyed.", "POST": "Polling interval is cleared." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Footer", "type": "Component", "start_line": 1, "end_line": 10, "tags": { "SEMANTICS": "footer, layout, copyright", "PURPOSE": "Displays the application footer with copyright information.", "LAYER": "UI" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "MissingMappingModal", "type": "Component", "start_line": 1, "end_line": 118, "tags": { "SEMANTICS": "modal, mapping, prompt, migration", "PURPOSE": "Prompts the user to provide a database mapping when one is missing during migration.", "LAYER": "Feature", "RELATION": "DISPATCHES -> resolve", "INVARIANT": "Modal blocks migration progress until resolved or cancelled." }, "relations": [], "children": [ { "name": "resolve", "type": "Function", "start_line": 26, "end_line": 39, "tags": { "PURPOSE": "Dispatches the resolution event with the selected mapping.", "PRE": "selectedTargetUuid must be set.", "POST": "'resolve' event is dispatched and modal is hidden." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "cancel", "type": "Function", "start_line": 41, "end_line": 49, "tags": { "PURPOSE": "Cancels the mapping resolution modal.", "PRE": "Modal is open.", "POST": "'cancel' event is dispatched and modal is hidden." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DashboardGrid", "type": "Component", "start_line": 1, "end_line": 213, "tags": { "SEMANTICS": "dashboard, grid, selection, pagination", "PURPOSE": "Displays a grid of dashboards with selection and pagination.", "LAYER": "Component", "RELATION": "USED_BY -> frontend/src/routes/migration/+page.svelte", "INVARIANT": "Selected IDs must be a subset of available dashboards." }, "relations": [], "children": [ { "name": "handleSort", "type": "Function", "start_line": 62, "end_line": 74, "tags": { "PURPOSE": "Toggles sort direction or changes sort column.", "PRE": "column name is provided.", "POST": "sortColumn and sortDirection state updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleSelectionChange", "type": "Function", "start_line": 76, "end_line": 90, "tags": { "PURPOSE": "Handles individual checkbox changes.", "PRE": "dashboard ID and checked status provided.", "POST": "selectedIds array updated and selectionChanged event dispatched." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleSelectAll", "type": "Function", "start_line": 92, "end_line": 110, "tags": { "PURPOSE": "Handles select all checkbox.", "PRE": "checked status provided.", "POST": "selectedIds array updated for all paginated items and event dispatched." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "goToPage", "type": "Function", "start_line": 112, "end_line": 121, "tags": { "PURPOSE": "Changes current page.", "PRE": "page index is provided.", "POST": "currentPage state updated if within valid range." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Navbar", "type": "Component", "start_line": 1, "end_line": 59, "tags": { "SEMANTICS": "navbar, navigation, header, layout", "PURPOSE": "Main navigation bar for the application.", "LAYER": "UI", "RELATION": "USES -> $app/stores" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskHistory", "type": "Component", "start_line": 1, "end_line": 209, "tags": { "SEMANTICS": "task, history, list, status, monitoring", "PURPOSE": "Displays a list of recent tasks with their status and allows selecting them for viewing logs.", "LAYER": "UI", "RELATION": "USES -> frontend/src/lib/api.js (inferred)" }, "relations": [], "children": [ { "name": "fetchTasks", "type": "Function", "start_line": 18, "end_line": 48, "tags": { "PURPOSE": "Fetches the list of recent tasks from the API.", "PRE": "None.", "POST": "tasks array is updated and selectedTask status synchronized." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "clearTasks", "type": "Function", "start_line": 50, "end_line": 69, "tags": { "PURPOSE": "Clears tasks from the history, optionally filtered by status.", "PRE": "User confirms deletion via prompt.", "POST": "Tasks are deleted from backend and list is re-fetched." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "selectTask", "type": "Function", "start_line": 71, "end_line": 91, "tags": { "PURPOSE": "Selects a task and fetches its full details.", "PRE": "task object is provided.", "POST": "selectedTask store is updated with full task details." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "getStatusColor", "type": "Function", "start_line": 93, "end_line": 107, "tags": { "PURPOSE": "Returns the CSS color class for a given task status.", "PRE": "status string is provided.", "POST": "Returns tailwind color class string." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "onMount", "type": "Function", "start_line": 109, "end_line": 117, "tags": { "PURPOSE": "Initializes the component by fetching tasks and starting polling.", "PRE": "Component is mounting.", "POST": "Tasks are fetched and 5s polling interval is started." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "onDestroy", "type": "Function", "start_line": 119, "end_line": 126, "tags": { "PURPOSE": "Cleans up the polling interval when the component is destroyed.", "PRE": "Component is being destroyed.", "POST": "Polling interval is cleared." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Toast", "type": "Component", "start_line": 1, "end_line": 31, "tags": { "SEMANTICS": "toast, notification, feedback, ui", "PURPOSE": "Displays transient notifications (toasts) in the bottom-right corner.", "LAYER": "UI", "RELATION": "DEPENDS_ON -> frontend/src/lib/toasts.js", "PROPS": "None", "EVENTS": "None" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskRunner", "type": "Component", "start_line": 1, "end_line": 395, "tags": { "SEMANTICS": "task, runner, logs, websocket", "PURPOSE": "Connects to a WebSocket to display real-time logs for a running task.", "LAYER": "UI", "RELATION": "DEPENDS_ON -> frontend/src/lib/stores.js", "PROPS": "None", "EVENTS": "None" }, "relations": [], "children": [ { "name": "connect", "type": "Function", "start_line": 38, "end_line": 132, "tags": { "PURPOSE": "Establishes WebSocket connection with exponential backoff.", "PRE": "selectedTask must be set in the store.", "POST": "WebSocket instance created and listeners attached." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "fetchTargetDatabases", "type": "Function", "start_line": 134, "end_line": 156, "tags": { "PURPOSE": "Fetches the list of databases in the target environment.", "PRE": "task must be selected and have a target environment parameter.", "POST": "targetDatabases array is populated with database objects." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleMappingResolve", "type": "Function", "start_line": 158, "end_line": 201, "tags": { "PURPOSE": "Handles the resolution of a missing database mapping.", "PRE": "event.detail contains sourceDbUuid, targetDbUuid, and targetDbName.", "POST": "Mapping is saved and task is resumed." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handlePasswordResume", "type": "Function", "start_line": 203, "end_line": 225, "tags": { "PURPOSE": "Handles the submission of database passwords to resume a task.", "PRE": "event.detail contains passwords dictionary.", "POST": "Task resume endpoint is called with passwords." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "startDataTimeout", "type": "Function", "start_line": 227, "end_line": 239, "tags": { "PURPOSE": "Starts a timeout to detect when the log stream has stalled.", "PRE": "None.", "POST": "dataTimeout is set to check connection status after 5s." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resetDataTimeout", "type": "Function", "start_line": 241, "end_line": 250, "tags": { "PURPOSE": "Resets the data stall timeout.", "PRE": "dataTimeout must be active.", "POST": "dataTimeout is cleared and restarted." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "onMount", "type": "Function", "start_line": 252, "end_line": 279, "tags": { "PURPOSE": "Initializes the component and subscribes to task selection changes.", "PRE": "Svelte component is mounting.", "POST": "Store subscription is created and returned for cleanup." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "onDestroy", "type": "Function", "start_line": 281, "end_line": 295, "tags": { "PURPOSE": "Close WebSocket connection when the component is destroyed.", "PRE": "Component is being destroyed.", "POST": "WebSocket is closed and timeouts are cleared." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskList", "type": "Component", "start_line": 1, "end_line": 109, "tags": { "SEMANTICS": "tasks, list, status, history", "PURPOSE": "Displays a list of tasks with their status and execution details.", "LAYER": "Component", "RELATION": "USES -> api.js" }, "relations": [], "children": [ { "name": "getStatusColor", "type": "Function", "start_line": 18, "end_line": 33, "tags": { "PURPOSE": "Returns the CSS color class for a given task status.", "PRE": "status string is provided.", "POST": "Returns tailwind color class string." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "formatTime", "type": "Function", "start_line": 35, "end_line": 47, "tags": { "PURPOSE": "Formats a date string using date-fns.", "PRE": "dateStr is a valid date string or null.", "POST": "Returns human-readable relative time string." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleTaskClick", "type": "Function", "start_line": 49, "end_line": 56, "tags": { "PURPOSE": "Dispatches a select event when a task is clicked.", "PRE": "taskId is provided.", "POST": "'select' event is dispatched with task ID." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DynamicForm", "type": "Component", "start_line": 1, "end_line": 92, "tags": { "SEMANTICS": "form, schema, dynamic, json-schema", "PURPOSE": "Generates a form dynamically based on a JSON schema.", "LAYER": "UI", "RELATION": "DEPENDS_ON -> svelte:createEventDispatcher", "PROPS": "", "EVENTS": "" }, "relations": [], "children": [ { "name": "handleSubmit", "type": "Function", "start_line": 23, "end_line": 33, "tags": { "PURPOSE": "Dispatches the submit event with the form data.", "PRE": "formData contains user input.", "POST": "'submit' event is dispatched with formData." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "initializeForm", "type": "Function", "start_line": 35, "end_line": 48, "tags": { "PURPOSE": "Initialize form data with default values from the schema.", "PRE": "schema is provided and contains properties.", "POST": "formData is initialized with default values or empty strings." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "EnvSelector", "type": "Component", "start_line": 1, "end_line": 60, "tags": { "SEMANTICS": "environment, selector, dropdown, migration", "PURPOSE": "Provides a UI component for selecting source and target environments.", "LAYER": "Feature", "RELATION": "BINDS_TO -> environments store", "INVARIANT": "Source and target environments must be selectable from the list of configured environments." }, "relations": [], "children": [ { "name": "handleSelect", "type": "Function", "start_line": 24, "end_line": 36, "tags": { "PURPOSE": "Dispatches the selection change event.", "PRE": "event.target must be an HTMLSelectElement.", "POST": "selectedId is updated and 'change' event is dispatched.", "PARAM": "{Event} event - The change event from the select element." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "ConnectionForm", "type": "Component", "start_line": 1, "end_line": 108, "tags": { "SEMANTICS": "connection, form, settings", "PURPOSE": "UI component for creating a new database connection configuration.", "LAYER": "UI", "RELATION": "USES -> frontend/src/services/connectionService.js" }, "relations": [], "children": [ { "name": "handleSubmit", "type": "Function", "start_line": 26, "end_line": 50, "tags": { "PURPOSE": "Submits the connection form to the backend.", "PRE": "All required fields (name, host, database, username, password) must be filled.", "POST": "A new connection is created via the connection service and a success event is dispatched." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resetForm", "type": "Function", "start_line": 52, "end_line": 65, "tags": { "PURPOSE": "Resets the connection form fields to their default values.", "PRE": "None.", "POST": "All form input variables are reset." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "ConnectionList", "type": "Component", "start_line": 1, "end_line": 88, "tags": { "SEMANTICS": "connection, list, settings", "PURPOSE": "UI component for listing and deleting saved database connection configurations.", "LAYER": "UI", "RELATION": "USES -> frontend/src/services/connectionService.js" }, "relations": [], "children": [ { "name": "fetchConnections", "type": "Function", "start_line": 20, "end_line": 34, "tags": { "PURPOSE": "Fetches the list of connections from the backend.", "PRE": "None.", "POST": "connections array is populated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleDelete", "type": "Function", "start_line": 36, "end_line": 51, "tags": { "PURPOSE": "Deletes a connection configuration.", "PRE": "id is provided and user confirms deletion.", "POST": "Connection is deleted from backend and list is reloaded." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "MapperTool", "type": "Component", "start_line": 1, "end_line": 165, "tags": { "SEMANTICS": "mapper, tool, dataset, postgresql, excel", "PURPOSE": "UI component for mapping dataset column verbose names using the MapperPlugin.", "LAYER": "UI", "RELATION": "USES -> frontend/src/services/connectionService.js" }, "relations": [], "children": [ { "name": "fetchData", "type": "Function", "start_line": 29, "end_line": 42, "tags": { "PURPOSE": "Fetches environments and saved connections.", "PRE": "None.", "POST": "envs and connections arrays are populated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleRunMapper", "type": "Function", "start_line": 44, "end_line": 85, "tags": { "PURPOSE": "Triggers the MapperPlugin task.", "PRE": "selectedEnv and datasetId are set; source-specific fields are valid.", "POST": "Mapper task is started and selectedTask is updated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DebugTool", "type": "Component", "start_line": 1, "end_line": 190, "tags": { "SEMANTICS": "debug, tool, api, structure", "PURPOSE": "UI component for system diagnostics and debugging API responses.", "LAYER": "UI", "RELATION": "USES -> frontend/src/services/toolsService.js" }, "relations": [], "children": [ { "name": "fetchEnvironments", "type": "Function", "start_line": 26, "end_line": 41, "tags": { "PURPOSE": "Fetches available environments.", "PRE": "API is available.", "POST": "envs variable is populated.", "RETURNS": "{Promise}" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleRunDebug", "type": "Function", "start_line": 43, "end_line": 84, "tags": { "PURPOSE": "Triggers the debug task.", "PRE": "Required fields are selected.", "POST": "Task is started and polling begins.", "RETURNS": "{Promise}" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "startPolling", "type": "Function", "start_line": 86, "end_line": 116, "tags": { "PURPOSE": "Polls for task completion.", "PRE": "Task ID is valid.", "POST": "Polls until success/failure.", "PARAM": "{string} taskId - ID of the task.", "RETURNS": "{void}" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "SearchTool", "type": "Component", "start_line": 1, "end_line": 186, "tags": { "SEMANTICS": "search, tool, dataset, regex", "PURPOSE": "UI component for searching datasets using the SearchPlugin.", "LAYER": "UI", "RELATION": "USES -> frontend/src/services/toolsService.js" }, "relations": [], "children": [ { "name": "fetchEnvironments", "type": "Function", "start_line": 23, "end_line": 35, "tags": { "PURPOSE": "Fetches the list of available environments.", "PRE": "None.", "POST": "envs array is populated." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "handleSearch", "type": "Function", "start_line": 37, "end_line": 64, "tags": { "PURPOSE": "Triggers the SearchPlugin task.", "PRE": "selectedEnv and searchQuery must be set.", "POST": "Task is started and polling begins." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "startPolling", "type": "Function", "start_line": 66, "end_line": 95, "tags": { "PURPOSE": "Polls for task completion and results.", "PRE": "taskId is provided.", "POST": "pollInterval is set and results are updated on success." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "AppModule", "type": "Module", "start_line": 1, "end_line": 189, "tags": { "SEMANTICS": "app, main, entrypoint, fastapi", "PURPOSE": "The main entry point for the FastAPI application. It initializes the app, configures CORS, sets up dependencies, includes API routers, and defines the WebSocket endpoint for log streaming.", "LAYER": "UI (API)", "RELATION": "Depends on the dependency module and API route modules." }, "relations": [], "children": [ { "name": "App", "type": "Global", "start_line": 26, "end_line": 34, "tags": { "SEMANTICS": "app, fastapi, instance", "PURPOSE": "The global FastAPI application instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "startup_event", "type": "Function", "start_line": 36, "end_line": 46, "tags": { "PURPOSE": "Handles application startup tasks, such as starting the scheduler.", "PRE": "None.", "POST": "Scheduler is started." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "shutdown_event", "type": "Function", "start_line": 48, "end_line": 58, "tags": { "PURPOSE": "Handles application shutdown tasks, such as stopping the scheduler.", "PRE": "None.", "POST": "Scheduler is stopped." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "log_requests", "type": "Function", "start_line": 70, "end_line": 83, "tags": { "PURPOSE": "Middleware to log incoming HTTP requests and their response status.", "PRE": "request is a FastAPI Request object.", "POST": "Logs request and response details.", "PARAM": "call_next (Callable) - The next middleware or route handler." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "websocket_endpoint", "type": "Function", "start_line": 94, "end_line": 151, "tags": { "PURPOSE": "Provides a WebSocket endpoint for real-time log streaming of a task.", "PRE": "task_id must be a valid task ID.", "POST": "WebSocket connection is managed and logs are streamed until disconnect." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "StaticFiles", "type": "Mount", "start_line": 153, "end_line": 188, "tags": { "SEMANTICS": "static, frontend, spa", "PURPOSE": "Mounts the frontend build directory to serve static assets." }, "relations": [], "children": [ { "name": "serve_spa", "type": "Function", "start_line": 161, "end_line": 177, "tags": { "PURPOSE": "Serves frontend static files or index.html for SPA routing.", "PRE": "file_path is requested by the client.", "POST": "Returns the requested file or index.html as a fallback." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "read_root", "type": "Function", "start_line": 179, "end_line": 187, "tags": { "PURPOSE": "A simple root endpoint to confirm that the API is running when frontend is missing.", "PRE": "None.", "POST": "Returns a JSON message indicating API status." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Dependencies", "type": "Module", "start_line": 1, "end_line": 80, "tags": { "SEMANTICS": "dependency, injection, singleton, factory", "PURPOSE": "Manages the creation and provision of shared application dependencies, such as the PluginLoader and TaskManager, to avoid circular imports.", "LAYER": "Core", "RELATION": "Used by the main app and API routers to get access to shared instances." }, "relations": [], "children": [ { "name": "get_config_manager", "type": "Function", "start_line": 24, "end_line": 33, "tags": { "PURPOSE": "Dependency injector for the ConfigManager.", "PRE": "Global config_manager must be initialized.", "POST": "Returns shared ConfigManager instance.", "RETURN": "ConfigManager - The shared config manager instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_plugin_loader", "type": "Function", "start_line": 47, "end_line": 56, "tags": { "PURPOSE": "Dependency injector for the PluginLoader.", "PRE": "Global plugin_loader must be initialized.", "POST": "Returns shared PluginLoader instance.", "RETURN": "PluginLoader - The shared plugin loader instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_task_manager", "type": "Function", "start_line": 58, "end_line": 67, "tags": { "PURPOSE": "Dependency injector for the TaskManager.", "PRE": "Global task_manager must be initialized.", "POST": "Returns shared TaskManager instance.", "RETURN": "TaskManager - The shared task manager instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_scheduler_service", "type": "Function", "start_line": 69, "end_line": 78, "tags": { "PURPOSE": "Dependency injector for the SchedulerService.", "PRE": "Global scheduler_service must be initialized.", "POST": "Returns shared SchedulerService instance.", "RETURN": "SchedulerService - The shared scheduler service instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.core.superset_client", "type": "Module", "start_line": 1, "end_line": 119, "tags": { "SEMANTICS": "superset, api, client, database, metadata", "PURPOSE": "Extends the base SupersetClient with database-specific metadata fetching.", "LAYER": "Core", "INVARIANT": "All database metadata requests must include UUID and name." }, "relations": [ { "type": "INHERITS_FROM", "target": "superset_tool.client.SupersetClient" } ], "children": [ { "name": "SupersetClient", "type": "Class", "start_line": 17, "end_line": 117, "tags": { "PURPOSE": "Extended SupersetClient for migration-specific operations." }, "relations": [], "children": [ { "name": "get_databases_summary", "type": "Function", "start_line": 21, "end_line": 41, "tags": { "PURPOSE": "Fetch a summary of databases including uuid, name, and engine.", "PRE": "self.network must be initialized and authenticated.", "POST": "Returns a list of database dictionaries with 'engine' field.", "RETURN": "List[Dict] - Summary of databases." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_database_by_uuid", "type": "Function", "start_line": 43, "end_line": 59, "tags": { "PURPOSE": "Find a database by its UUID.", "PRE": "db_uuid must be a string.", "POST": "Returns database metadata if found.", "PARAM": "db_uuid (str) - The UUID of the database.", "RETURN": "Optional[Dict] - Database info if found, else None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_dashboards_summary", "type": "Function", "start_line": 61, "end_line": 87, "tags": { "PURPOSE": "Fetches dashboard metadata optimized for the grid.", "PRE": "self.network must be authenticated.", "POST": "Returns a list of dashboard dictionaries mapped to the grid schema.", "RETURN": "List[Dict]" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_dataset", "type": "Function", "start_line": 89, "end_line": 101, "tags": { "PURPOSE": "Fetch full dataset structure including columns and metrics.", "PRE": "dataset_id must be a valid integer.", "POST": "Returns full dataset metadata from Superset API.", "PARAM": "dataset_id (int) - The ID of the dataset.", "RETURN": "Dict - The dataset metadata." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_dataset", "type": "Function", "start_line": 103, "end_line": 115, "tags": { "PURPOSE": "Update dataset metadata.", "PRE": "dataset_id must be valid, data must be a valid Superset dataset payload.", "POST": "Dataset is updated in Superset.", "PARAM": "data (Dict) - The payload for update." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "ConfigManagerModule", "type": "Module", "start_line": 1, "end_line": 266, "tags": { "SEMANTICS": "config, manager, persistence, json", "PURPOSE": "Manages application configuration, including loading/saving to JSON and CRUD for environments.", "LAYER": "Core", "INVARIANT": "Configuration must always be valid according to AppConfig model.", "PUBLIC_API": "ConfigManager" }, "relations": [ { "type": "DEPENDS_ON", "target": "ConfigModels" }, { "type": "CALLS", "target": "logger" }, { "type": "WRITES_TO", "target": "config.json" } ], "children": [ { "name": "ConfigManager", "type": "Class", "start_line": 22, "end_line": 264, "tags": { "PURPOSE": "A class to handle application configuration persistence and management." }, "relations": [ { "type": "WRITES_TO", "target": "config.json" } ], "children": [ { "name": "__init__", "type": "Function", "start_line": 27, "end_line": 50, "tags": { "PURPOSE": "Initializes the ConfigManager.", "PRE": "isinstance(config_path, str) and len(config_path) > 0", "POST": "self.config is an instance of AppConfig", "PARAM": "config_path (str) - Path to the configuration file." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_load_config", "type": "Function", "start_line": 52, "end_line": 84, "tags": { "PURPOSE": "Loads the configuration from disk or creates a default one.", "PRE": "self.config_path is set.", "POST": "isinstance(return, AppConfig)", "RETURN": "AppConfig - The loaded or default configuration." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_save_config_to_disk", "type": "Function", "start_line": 86, "end_line": 105, "tags": { "PURPOSE": "Saves the provided configuration object to disk.", "PRE": "isinstance(config, AppConfig)", "POST": "Configuration saved to disk.", "PARAM": "config (AppConfig) - The configuration to save." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "save", "type": "Function", "start_line": 107, "end_line": 114, "tags": { "PURPOSE": "Saves the current configuration state to disk.", "PRE": "self.config is set.", "POST": "self._save_config_to_disk called." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_config", "type": "Function", "start_line": 116, "end_line": 124, "tags": { "PURPOSE": "Returns the current configuration.", "PRE": "self.config is set.", "POST": "Returns self.config.", "RETURN": "AppConfig - The current configuration." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_global_settings", "type": "Function", "start_line": 126, "end_line": 146, "tags": { "PURPOSE": "Updates the global settings and persists the change.", "PRE": "isinstance(settings, GlobalSettings)", "POST": "self.config.settings updated and saved.", "PARAM": "settings (GlobalSettings) - The new global settings." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "validate_path", "type": "Function", "start_line": 148, "end_line": 167, "tags": { "PURPOSE": "Validates if a path exists and is writable.", "PRE": "path is a string.", "POST": "Returns (bool, str) status.", "PARAM": "path (str) - The path to validate.", "RETURN": "tuple (bool, str) - (is_valid, message)" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_environments", "type": "Function", "start_line": 169, "end_line": 177, "tags": { "PURPOSE": "Returns the list of configured environments.", "PRE": "self.config is set.", "POST": "Returns list of environments.", "RETURN": "List[Environment] - List of environments." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "has_environments", "type": "Function", "start_line": 179, "end_line": 187, "tags": { "PURPOSE": "Checks if at least one environment is configured.", "PRE": "self.config is set.", "POST": "Returns boolean indicating if environments exist.", "RETURN": "bool - True if at least one environment exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "add_environment", "type": "Function", "start_line": 189, "end_line": 208, "tags": { "PURPOSE": "Adds a new environment to the configuration.", "PRE": "isinstance(env, Environment)", "POST": "Environment added or updated in self.config.environments.", "PARAM": "env (Environment) - The environment to add." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_environment", "type": "Function", "start_line": 210, "end_line": 239, "tags": { "PURPOSE": "Updates an existing environment.", "PRE": "isinstance(env_id, str) and len(env_id) > 0 and isinstance(updated_env, Environment)", "POST": "Returns True if environment was found and updated.", "PARAM": "updated_env (Environment) - The updated environment data.", "RETURN": "bool - True if updated, False otherwise." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "delete_environment", "type": "Function", "start_line": 241, "end_line": 262, "tags": { "PURPOSE": "Deletes an environment by ID.", "PRE": "isinstance(env_id, str) and len(env_id) > 0", "POST": "Environment removed from self.config.environments if it existed.", "PARAM": "env_id (str) - The ID of the environment to delete." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "SchedulerModule", "type": "Module", "start_line": 1, "end_line": 119, "tags": { "SEMANTICS": "scheduler, apscheduler, cron, backup", "PURPOSE": "Manages scheduled tasks using APScheduler.", "LAYER": "Core", "RELATION": "Uses TaskManager to run scheduled backups." }, "relations": [], "children": [ { "name": "SchedulerService", "type": "Class", "start_line": 16, "end_line": 118, "tags": { "SEMANTICS": "scheduler, service, apscheduler", "PURPOSE": "Provides a service to manage scheduled backup tasks." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 20, "end_line": 30, "tags": { "PURPOSE": "Initializes the scheduler service with task and config managers.", "PRE": "task_manager and config_manager must be provided.", "POST": "Scheduler instance is created but not started." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "start", "type": "Function", "start_line": 32, "end_line": 42, "tags": { "PURPOSE": "Starts the background scheduler and loads initial schedules.", "PRE": "Scheduler should be initialized.", "POST": "Scheduler is running and schedules are loaded." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "stop", "type": "Function", "start_line": 44, "end_line": 53, "tags": { "PURPOSE": "Stops the background scheduler.", "PRE": "Scheduler should be running.", "POST": "Scheduler is shut down." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "load_schedules", "type": "Function", "start_line": 55, "end_line": 68, "tags": { "PURPOSE": "Loads backup schedules from configuration and registers them.", "PRE": "config_manager must have valid configuration.", "POST": "All enabled backup jobs are added to the scheduler." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "add_backup_job", "type": "Function", "start_line": 70, "end_line": 90, "tags": { "PURPOSE": "Adds a scheduled backup job for an environment.", "PRE": "env_id and cron_expression must be valid strings.", "POST": "A new job is added to the scheduler or replaced if it already exists.", "PARAM": "cron_expression (str) - The cron expression for the schedule." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_trigger_backup", "type": "Function", "start_line": 92, "end_line": 116, "tags": { "PURPOSE": "Triggered by the scheduler to start a backup task.", "PRE": "env_id must be a valid environment ID.", "POST": "A new backup task is created in the task manager if not already running.", "PARAM": "env_id (str) - The ID of the environment." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "ConfigModels", "type": "Module", "start_line": 1, "end_line": 60, "tags": { "SEMANTICS": "config, models, pydantic", "PURPOSE": "Defines the data models for application configuration using Pydantic.", "LAYER": "Core" }, "relations": [ { "type": "READS_FROM", "target": "config.json" }, { "type": "USED_BY", "target": "ConfigManager" } ], "children": [ { "name": "Schedule", "type": "DataClass", "start_line": 11, "end_line": 16, "tags": { "PURPOSE": "Represents a backup schedule configuration." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "Environment", "type": "DataClass", "start_line": 18, "end_line": 28, "tags": { "PURPOSE": "Represents a Superset environment configuration." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "LoggingConfig", "type": "DataClass", "start_line": 30, "end_line": 38, "tags": { "PURPOSE": "Defines the configuration for the application's logging system." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "GlobalSettings", "type": "DataClass", "start_line": 40, "end_line": 51, "tags": { "PURPOSE": "Represents global application settings." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "AppConfig", "type": "DataClass", "start_line": 53, "end_line": 58, "tags": { "PURPOSE": "The root configuration model containing all application settings." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.core.database", "type": "Module", "start_line": 1, "end_line": 85, "tags": { "SEMANTICS": "database, sqlite, sqlalchemy, session, persistence", "PURPOSE": "Configures the SQLite database connection and session management.", "LAYER": "Core", "INVARIANT": "A single engine instance is used for the entire application." }, "relations": [ { "type": "DEPENDS_ON", "target": "sqlalchemy" }, { "type": "USES", "target": "backend.src.models.mapping" } ], "children": [ { "name": "DATABASE_URL", "type": "Constant", "start_line": 21, "end_line": 23, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "TASKS_DATABASE_URL", "type": "Constant", "start_line": 25, "end_line": 27, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "engine", "type": "Variable", "start_line": 29, "end_line": 31, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "tasks_engine", "type": "Variable", "start_line": 33, "end_line": 35, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "SessionLocal", "type": "Class", "start_line": 37, "end_line": 40, "tags": { "PURPOSE": "A session factory for the main mappings database." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "TasksSessionLocal", "type": "Class", "start_line": 42, "end_line": 45, "tags": { "PURPOSE": "A session factory for the tasks execution database." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "init_db", "type": "Function", "start_line": 47, "end_line": 55, "tags": { "PURPOSE": "Initializes the database by creating all tables.", "PRE": "engine and tasks_engine are initialized.", "POST": "Database tables created." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_db", "type": "Function", "start_line": 57, "end_line": 69, "tags": { "PURPOSE": "Dependency for getting a database session.", "PRE": "SessionLocal is initialized.", "POST": "Session is closed after use.", "RETURN": "Generator[Session, None, None]" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_tasks_db", "type": "Function", "start_line": 71, "end_line": 83, "tags": { "PURPOSE": "Dependency for getting a tasks database session.", "PRE": "TasksSessionLocal is initialized.", "POST": "Session is closed after use.", "RETURN": "Generator[Session, None, None]" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "LoggerModule", "type": "Module", "start_line": 1, "end_line": 220, "tags": { "SEMANTICS": "logging, websocket, streaming, handler", "PURPOSE": "Configures the application's logging system, including a custom handler for buffering logs and streaming them over WebSockets.", "LAYER": "Core", "RELATION": "Used by the main application and other modules to log events. The WebSocketLogHandler is used by the WebSocket endpoint in app.py." }, "relations": [], "children": [ { "name": "BeliefFormatter", "type": "Class", "start_line": 22, "end_line": 38, "tags": { "PURPOSE": "Custom logging formatter that adds belief state prefixes to log messages." }, "relations": [], "children": [ { "name": "format", "type": "Function", "start_line": 25, "end_line": 37, "tags": { "PURPOSE": "Formats the log record, adding belief state context if available.", "PRE": "record is a logging.LogRecord.", "POST": "Returns formatted string.", "PARAM": "record (logging.LogRecord) - The log record to format.", "RETURN": "str - The formatted log message." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "LogEntry", "type": "Class", "start_line": 41, "end_line": 50, "tags": { "SEMANTICS": "log, entry, record, pydantic", "PURPOSE": "A Pydantic model representing a single, structured log entry. This is a re-definition for consistency, as it's also defined in task_manager.py." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "belief_scope", "type": "Function", "start_line": 52, "end_line": 85, "tags": { "PURPOSE": "Context manager for structured Belief State logging.", "PARAM": "message (str) - Optional entry message.", "PRE": "anchor_id must be provided.", "POST": "Thread-local belief state is updated and entry/exit logs are generated." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "configure_logger", "type": "Function", "start_line": 87, "end_line": 129, "tags": { "PURPOSE": "Configures the logger with the provided logging settings.", "PRE": "config is a valid LoggingConfig instance.", "POST": "Logger level, handlers, and belief state flag are updated.", "PARAM": "config (LoggingConfig) - The logging configuration." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "WebSocketLogHandler", "type": "Class", "start_line": 131, "end_line": 193, "tags": { "SEMANTICS": "logging, handler, websocket, buffer", "PURPOSE": "A custom logging handler that captures log records into a buffer. It is designed to be extended for real-time log streaming over WebSockets." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 139, "end_line": 150, "tags": { "PURPOSE": "Initializes the handler with a fixed-capacity buffer.", "PRE": "capacity is an integer.", "POST": "Instance initialized with empty deque.", "PARAM": "capacity (int) - Maximum number of logs to keep in memory." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "emit", "type": "Function", "start_line": 152, "end_line": 178, "tags": { "PURPOSE": "Captures a log record, formats it, and stores it in the buffer.", "PRE": "record is a logging.LogRecord.", "POST": "Log is added to the log_buffer.", "PARAM": "record (logging.LogRecord) - The log record to emit." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_recent_logs", "type": "Function", "start_line": 180, "end_line": 191, "tags": { "PURPOSE": "Returns a list of recent log entries from the buffer.", "PRE": "None.", "POST": "Returns list of LogEntry objects.", "RETURN": "List[LogEntry] - List of buffered log entries." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "Logger", "type": "Global", "start_line": 195, "end_line": 219, "tags": { "SEMANTICS": "logger, global, instance", "PURPOSE": "The global logger instance for the application, configured with both a console handler and the custom WebSocket handler." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "PluginLoader", "type": "Class", "start_line": 9, "end_line": 191, "tags": { "SEMANTICS": "plugin, loader, dynamic, import", "PURPOSE": "Scans a specified directory for Python modules, dynamically loads them, and registers any classes that are valid implementations of the PluginBase interface.", "LAYER": "Core", "RELATION": "Depends on PluginBase. It is used by the main application to discover and manage available plugins." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 20, "end_line": 31, "tags": { "PURPOSE": "Initializes the PluginLoader with a directory to scan.", "PRE": "plugin_dir is a valid directory path.", "POST": "Plugins are loaded and registered.", "PARAM": "plugin_dir (str) - The directory containing plugin modules." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_load_plugins", "type": "Function", "start_line": 33, "end_line": 57, "tags": { "PURPOSE": "Scans the plugin directory and loads all valid plugins.", "PRE": "plugin_dir exists or can be created.", "POST": "_load_module is called for each .py file." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_load_module", "type": "Function", "start_line": 59, "end_line": 107, "tags": { "PURPOSE": "Loads a single Python module and discovers PluginBase implementations.", "PRE": "module_name and file_path are valid.", "POST": "Plugin classes are instantiated and registered.", "PARAM": "file_path (str) - The path to the module file." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_register_plugin", "type": "Function", "start_line": 109, "end_line": 147, "tags": { "PURPOSE": "Registers a PluginBase instance and its configuration.", "PRE": "plugin_instance is a valid implementation of PluginBase.", "POST": "Plugin is added to _plugins and _plugin_configs.", "PARAM": "plugin_instance (PluginBase) - The plugin instance to register." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_plugin", "type": "Function", "start_line": 150, "end_line": 162, "tags": { "PURPOSE": "Retrieves a loaded plugin instance by its ID.", "PRE": "plugin_id is a string.", "POST": "Returns plugin instance or None.", "PARAM": "plugin_id (str) - The unique identifier of the plugin.", "RETURN": "Optional[PluginBase] - The plugin instance if found, otherwise None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_all_plugin_configs", "type": "Function", "start_line": 164, "end_line": 175, "tags": { "PURPOSE": "Returns a list of all registered plugin configurations.", "PRE": "None.", "POST": "Returns list of all PluginConfig objects.", "RETURN": "List[PluginConfig] - A list of plugin configurations." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "has_plugin", "type": "Function", "start_line": 177, "end_line": 189, "tags": { "PURPOSE": "Checks if a plugin with the given ID is registered.", "PRE": "plugin_id is a string.", "POST": "Returns True if plugin exists.", "PARAM": "plugin_id (str) - The unique identifier of the plugin.", "RETURN": "bool - True if the plugin is registered, False otherwise." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.core.migration_engine", "type": "Module", "start_line": 1, "end_line": 104, "tags": { "SEMANTICS": "migration, engine, zip, yaml, transformation", "PURPOSE": "Handles the interception and transformation of Superset asset ZIP archives.", "LAYER": "Core", "INVARIANT": "ZIP structure must be preserved after transformation." }, "relations": [ { "type": "DEPENDS_ON", "target": "PyYAML" } ], "children": [ { "name": "MigrationEngine", "type": "Class", "start_line": 22, "end_line": 102, "tags": { "PURPOSE": "Engine for transforming Superset export ZIPs." }, "relations": [], "children": [ { "name": "transform_zip", "type": "Function", "start_line": 26, "end_line": 78, "tags": { "PURPOSE": "Extracts ZIP, replaces database UUIDs in YAMLs, and re-packages.", "PARAM": "strip_databases (bool) - Whether to remove the databases directory from the archive.", "PRE": "zip_path must point to a valid Superset export archive.", "POST": "Transformed archive is saved to output_path.", "RETURN": "bool - True if successful." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_transform_yaml", "type": "Function", "start_line": 80, "end_line": 100, "tags": { "PURPOSE": "Replaces database_uuid in a single YAML file.", "PARAM": "db_mapping (Dict[str, str]) - UUID mapping dictionary.", "PRE": "file_path must exist and be readable.", "POST": "File is modified in-place if source UUID matches mapping." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "PluginBase", "type": "Class", "start_line": 7, "end_line": 101, "tags": { "SEMANTICS": "plugin, interface, base, abstract", "PURPOSE": "Defines the abstract base class that all plugins must implement to be recognized by the system. It enforces a common structure for plugin metadata and execution.", "LAYER": "Core", "RELATION": "Used by PluginLoader to identify valid plugins.", "INVARIANT": "All plugins MUST inherit from this class." }, "relations": [], "children": [ { "name": "id", "type": "Function", "start_line": 21, "end_line": 30, "tags": { "PURPOSE": "Returns the unique identifier for the plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string ID.", "RETURN": "str - Plugin ID." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "name", "type": "Function", "start_line": 34, "end_line": 43, "tags": { "PURPOSE": "Returns the human-readable name of the plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string name.", "RETURN": "str - Plugin name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "description", "type": "Function", "start_line": 47, "end_line": 56, "tags": { "PURPOSE": "Returns a brief description of the plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string description.", "RETURN": "str - Plugin description." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "version", "type": "Function", "start_line": 60, "end_line": 69, "tags": { "PURPOSE": "Returns the version of the plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string version.", "RETURN": "str - Plugin version." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_schema", "type": "Function", "start_line": 72, "end_line": 84, "tags": { "PURPOSE": "Returns the JSON schema for the plugin's input parameters.", "PRE": "Plugin instance exists.", "POST": "Returns dict schema.", "RETURN": "Dict[str, Any] - JSON schema." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "execute", "type": "Function", "start_line": 87, "end_line": 100, "tags": { "PURPOSE": "Executes the plugin's core logic.", "PARAM": "params (Dict[str, Any]) - Validated input parameters.", "PRE": "params must be a dictionary.", "POST": "Plugin execution is completed." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "PluginConfig", "type": "Class", "start_line": 103, "end_line": 115, "tags": { "SEMANTICS": "plugin, config, schema, pydantic", "PURPOSE": "A Pydantic model used to represent the validated configuration and metadata of a loaded plugin. This object is what gets exposed to the API layer.", "LAYER": "Core", "RELATION": "Instantiated by PluginLoader after validating a PluginBase instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.core.utils.matching", "type": "Module", "start_line": 1, "end_line": 53, "tags": { "SEMANTICS": "fuzzy, matching, rapidfuzz, database, mapping", "PURPOSE": "Provides utility functions for fuzzy matching database names.", "LAYER": "Core", "INVARIANT": "Confidence scores are returned as floats between 0.0 and 1.0." }, "relations": [ { "type": "DEPENDS_ON", "target": "rapidfuzz" } ], "children": [ { "name": "suggest_mappings", "type": "Function", "start_line": 15, "end_line": 51, "tags": { "PURPOSE": "Suggests mappings between source and target databases using fuzzy matching.", "PRE": "source_databases and target_databases are lists of dictionaries with 'uuid' and 'database_name'.", "POST": "Returns a list of suggested mappings with confidence scores.", "PARAM": "threshold (int) - Minimum confidence score (0-100).", "RETURN": "List[Dict] - Suggested mappings." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskPersistenceModule", "type": "Module", "start_line": 1, "end_line": 158, "tags": { "SEMANTICS": "persistence, sqlite, sqlalchemy, task, storage", "PURPOSE": "Handles the persistence of tasks using SQLAlchemy and the tasks.db database.", "LAYER": "Core", "RELATION": "Used by TaskManager to save and load tasks.", "INVARIANT": "Database schema must match the TaskRecord model structure." }, "relations": [], "children": [ { "name": "TaskPersistenceService", "type": "Class", "start_line": 20, "end_line": 157, "tags": { "SEMANTICS": "persistence, service, database, sqlalchemy", "PURPOSE": "Provides methods to save and load tasks from the tasks.db database using SQLAlchemy." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 24, "end_line": 32, "tags": { "PURPOSE": "Initializes the persistence service.", "PRE": "None.", "POST": "Service is ready." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "persist_task", "type": "Function", "start_line": 34, "end_line": 77, "tags": { "PURPOSE": "Persists or updates a single task in the database.", "PRE": "isinstance(task, Task)", "POST": "Task record created or updated in database.", "PARAM": "task (Task) - The task object to persist." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "persist_tasks", "type": "Function", "start_line": 79, "end_line": 88, "tags": { "PURPOSE": "Persists multiple tasks.", "PRE": "isinstance(tasks, list)", "POST": "All tasks in list are persisted.", "PARAM": "tasks (List[Task]) - The list of tasks to persist." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "load_tasks", "type": "Function", "start_line": 90, "end_line": 135, "tags": { "PURPOSE": "Loads tasks from the database.", "PRE": "limit is an integer.", "POST": "Returns list of Task objects.", "PARAM": "status (Optional[TaskStatus]) - Filter by status.", "RETURN": "List[Task] - The loaded tasks." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "delete_tasks", "type": "Function", "start_line": 137, "end_line": 155, "tags": { "PURPOSE": "Deletes specific tasks from the database.", "PRE": "task_ids is a list of strings.", "POST": "Specified task records deleted from database.", "PARAM": "task_ids (List[str]) - List of task IDs to delete." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskManagerModule", "type": "Module", "start_line": 1, "end_line": 398, "tags": { "SEMANTICS": "task, manager, lifecycle, execution, state", "PURPOSE": "Manages the lifecycle of tasks, including their creation, execution, and state tracking. It uses a thread pool to run plugins asynchronously.", "LAYER": "Core", "RELATION": "Depends on PluginLoader to get plugin instances. It is used by the API layer to create and query tasks.", "INVARIANT": "Task IDs are unique.", "CONSTRAINT": "Must use belief_scope for logging." }, "relations": [], "children": [ { "name": "TaskManager", "type": "Class", "start_line": 20, "end_line": 397, "tags": { "SEMANTICS": "task, manager, lifecycle, execution, state", "PURPOSE": "Manages the lifecycle of tasks, including their creation, execution, and state tracking." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 28, "end_line": 49, "tags": { "PURPOSE": "Initialize the TaskManager with dependencies.", "PRE": "plugin_loader is initialized.", "POST": "TaskManager is ready to accept tasks.", "PARAM": "plugin_loader - The plugin loader instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "create_task", "type": "Function", "start_line": 51, "end_line": 78, "tags": { "PURPOSE": "Creates and queues a new task for execution.", "PRE": "Plugin with plugin_id exists. Params are valid.", "POST": "Task is created, added to registry, and scheduled for execution.", "PARAM": "user_id (Optional[str]) - ID of the user requesting the task.", "RETURN": "Task - The created task instance.", "THROWS": "ValueError if plugin not found or params invalid." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_run_task", "type": "Function", "start_line": 80, "end_line": 120, "tags": { "PURPOSE": "Internal method to execute a task.", "PRE": "Task exists in registry.", "POST": "Task is executed, status updated to SUCCESS or FAILED.", "PARAM": "task_id (str) - The ID of the task to run." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resolve_task", "type": "Function", "start_line": 122, "end_line": 144, "tags": { "PURPOSE": "Resumes a task that is awaiting mapping.", "PRE": "Task exists and is in AWAITING_MAPPING state.", "POST": "Task status updated to RUNNING, params updated, execution resumed.", "PARAM": "resolution_params (Dict[str, Any]) - Params to resolve the wait.", "THROWS": "ValueError if task not found or not awaiting mapping." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "wait_for_resolution", "type": "Function", "start_line": 146, "end_line": 165, "tags": { "PURPOSE": "Pauses execution and waits for a resolution signal.", "PRE": "Task exists.", "POST": "Execution pauses until future is set.", "PARAM": "task_id (str) - The ID of the task." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "wait_for_input", "type": "Function", "start_line": 167, "end_line": 185, "tags": { "PURPOSE": "Pauses execution and waits for user input.", "PRE": "Task exists.", "POST": "Execution pauses until future is set via resume_task_with_password.", "PARAM": "task_id (str) - The ID of the task." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_task", "type": "Function", "start_line": 187, "end_line": 196, "tags": { "PURPOSE": "Retrieves a task by its ID.", "PRE": "task_id is a string.", "POST": "Returns Task object or None.", "PARAM": "task_id (str) - ID of the task.", "RETURN": "Optional[Task] - The task or None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_all_tasks", "type": "Function", "start_line": 198, "end_line": 206, "tags": { "PURPOSE": "Retrieves all registered tasks.", "PRE": "None.", "POST": "Returns list of all Task objects.", "RETURN": "List[Task] - All tasks." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_tasks", "type": "Function", "start_line": 208, "end_line": 224, "tags": { "PURPOSE": "Retrieves tasks with pagination and optional status filter.", "PRE": "limit and offset are non-negative integers.", "POST": "Returns a list of tasks sorted by start_time descending.", "PARAM": "status (Optional[TaskStatus]) - Filter by task status.", "RETURN": "List[Task] - List of tasks matching criteria." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_task_logs", "type": "Function", "start_line": 226, "end_line": 236, "tags": { "PURPOSE": "Retrieves logs for a specific task.", "PRE": "task_id is a string.", "POST": "Returns list of LogEntry objects.", "PARAM": "task_id (str) - ID of the task.", "RETURN": "List[LogEntry] - List of log entries." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_add_log", "type": "Function", "start_line": 238, "end_line": 260, "tags": { "PURPOSE": "Adds a log entry to a task and notifies subscribers.", "PRE": "Task exists.", "POST": "Log added to task and pushed to queues.", "PARAM": "context (Optional[Dict]) - Log context." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "subscribe_logs", "type": "Function", "start_line": 262, "end_line": 275, "tags": { "PURPOSE": "Subscribes to real-time logs for a task.", "PRE": "task_id is a string.", "POST": "Returns an asyncio.Queue for log entries.", "PARAM": "task_id (str) - ID of the task.", "RETURN": "asyncio.Queue - Queue for log entries." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "unsubscribe_logs", "type": "Function", "start_line": 277, "end_line": 290, "tags": { "PURPOSE": "Unsubscribes from real-time logs for a task.", "PRE": "task_id is a string, queue is asyncio.Queue.", "POST": "Queue removed from subscribers.", "PARAM": "queue (asyncio.Queue) - Queue to remove." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "load_persisted_tasks", "type": "Function", "start_line": 292, "end_line": 302, "tags": { "PURPOSE": "Load persisted tasks using persistence service.", "PRE": "None.", "POST": "Persisted tasks loaded into self.tasks." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "await_input", "type": "Function", "start_line": 304, "end_line": 324, "tags": { "PURPOSE": "Transition a task to AWAITING_INPUT state with input request.", "PRE": "Task exists and is in RUNNING state.", "POST": "Task status changed to AWAITING_INPUT, input_request set, persisted.", "PARAM": "input_request (Dict) - Details about required input.", "THROWS": "ValueError if task not found or not RUNNING." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resume_task_with_password", "type": "Function", "start_line": 326, "end_line": 353, "tags": { "PURPOSE": "Resume a task that is awaiting input with provided passwords.", "PRE": "Task exists and is in AWAITING_INPUT state.", "POST": "Task status changed to RUNNING, passwords injected, task resumed.", "PARAM": "passwords (Dict[str, str]) - Mapping of database name to password.", "THROWS": "ValueError if task not found, not awaiting input, or passwords invalid." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "clear_tasks", "type": "Function", "start_line": 355, "end_line": 395, "tags": { "PURPOSE": "Clears tasks based on status filter.", "PRE": "status is Optional[TaskStatus].", "POST": "Tasks matching filter (or all non-active) cleared from registry and database.", "PARAM": "status (Optional[TaskStatus]) - Filter by task status.", "RETURN": "int - Number of tasks cleared." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskManagerModels", "type": "Module", "start_line": 1, "end_line": 68, "tags": { "SEMANTICS": "task, models, pydantic, enum, state", "PURPOSE": "Defines the data models and enumerations used by the Task Manager.", "LAYER": "Core", "RELATION": "Used by TaskManager and API routes.", "INVARIANT": "Task IDs are immutable once created.", "CONSTRAINT": "Must use Pydantic for data validation." }, "relations": [], "children": [ { "name": "TaskStatus", "type": "Enum", "start_line": 18, "end_line": 28, "tags": { "SEMANTICS": "task, status, state, enum", "PURPOSE": "Defines the possible states a task can be in during its lifecycle." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "LogEntry", "type": "Class", "start_line": 30, "end_line": 38, "tags": { "SEMANTICS": "log, entry, record, pydantic", "PURPOSE": "A Pydantic model representing a single, structured log entry associated with a task." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "Task", "type": "Class", "start_line": 40, "end_line": 66, "tags": { "SEMANTICS": "task, job, execution, state, pydantic", "PURPOSE": "A Pydantic model representing a single execution instance of a plugin, including its status, parameters, and logs." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 56, "end_line": 65, "tags": { "PURPOSE": "Initializes the Task model and validates input_request for AWAITING_INPUT status.", "PRE": "If status is AWAITING_INPUT, input_request must be provided.", "POST": "Task instance is created or ValueError is raised.", "PARAM": "**data - Keyword arguments for model initialization." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskCleanupModule", "type": "Module", "start_line": 1, "end_line": 47, "tags": { "SEMANTICS": "task, cleanup, retention", "PURPOSE": "Implements task cleanup and retention policies.", "LAYER": "Core", "RELATION": "Uses TaskPersistenceService to delete old tasks." }, "relations": [], "children": [ { "name": "TaskCleanupService", "type": "Class", "start_line": 12, "end_line": 46, "tags": { "PURPOSE": "Provides methods to clean up old task records." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 15, "end_line": 22, "tags": { "PURPOSE": "Initializes the cleanup service with dependencies.", "PRE": "persistence_service and config_manager are valid.", "POST": "Cleanup service is ready." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "run_cleanup", "type": "Function", "start_line": 24, "end_line": 44, "tags": { "PURPOSE": "Deletes tasks older than the configured retention period.", "PRE": "Config manager has valid settings.", "POST": "Old tasks are deleted from persistence." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TaskManagerPackage", "type": "Module", "start_line": 1, "end_line": 12, "tags": { "SEMANTICS": "task, manager, package, exports", "PURPOSE": "Exports the public API of the task manager package.", "LAYER": "Core", "RELATION": "Aggregates models and manager." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "AuthModule", "type": "Module", "start_line": 1, "end_line": 59, "tags": { "SEMANTICS": "auth, authentication, adfs, oauth, middleware", "PURPOSE": "Implements ADFS authentication using Authlib for FastAPI. It provides a dependency to protect endpoints.", "LAYER": "UI (API)", "RELATION": "Used by API routers to protect endpoints that require authentication." }, "relations": [], "children": [ { "name": "get_current_user", "type": "Function", "start_line": 34, "end_line": 58, "tags": { "PURPOSE": "Dependency to get the current user from the ADFS token.", "PARAM": "token (str) - The OAuth2 bearer token.", "PRE": "token should be provided via Authorization header.", "POST": "Returns user details if authenticated, else raises 401.", "RETURN": "Dict[str, str] - User information." }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "ConnectionsRouter", "type": "Module", "start_line": 1, "end_line": 100, "tags": { "SEMANTICS": "api, router, connections, database", "PURPOSE": "Defines the FastAPI router for managing external database connections.", "LAYER": "UI (API)", "RELATION": "Depends on SQLAlchemy session.", "CONSTRAINT": "Must use belief_scope for logging." }, "relations": [], "children": [ { "name": "ConnectionSchema", "type": "Class", "start_line": 21, "end_line": 35, "tags": { "PURPOSE": "Pydantic model for connection response." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "ConnectionCreate", "type": "Class", "start_line": 37, "end_line": 47, "tags": { "PURPOSE": "Pydantic model for creating a connection." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "list_connections", "type": "Function", "start_line": 49, "end_line": 60, "tags": { "PURPOSE": "Lists all saved connections.", "PRE": "Database session is active.", "POST": "Returns list of connection configs.", "PARAM": "db (Session) - Database session.", "RETURN": "List[ConnectionSchema] - List of connections." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "create_connection", "type": "Function", "start_line": 62, "end_line": 78, "tags": { "PURPOSE": "Creates a new connection configuration.", "PRE": "Connection name is unique.", "POST": "Connection is saved to DB.", "PARAM": "db (Session) - Database session.", "RETURN": "ConnectionSchema - Created connection." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "delete_connection", "type": "Function", "start_line": 80, "end_line": 98, "tags": { "PURPOSE": "Deletes a connection configuration.", "PRE": "Connection ID exists.", "POST": "Connection is removed from DB.", "PARAM": "db (Session) - Database session.", "RETURN": "None." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.api.routes.environments", "type": "Module", "start_line": 1, "end_line": 133, "tags": { "SEMANTICS": "api, environments, superset, databases", "PURPOSE": "API endpoints for listing environments and their databases.", "LAYER": "API", "INVARIANT": "Environment IDs must exist in the configuration." }, "relations": [ { "type": "DEPENDS_ON", "target": "backend.src.dependencies" }, { "type": "DEPENDS_ON", "target": "backend.src.core.superset_client" } ], "children": [ { "name": "ScheduleSchema", "type": "DataClass", "start_line": 23, "end_line": 27, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "EnvironmentResponse", "type": "DataClass", "start_line": 29, "end_line": 35, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "DatabaseResponse", "type": "DataClass", "start_line": 37, "end_line": 42, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_environments", "type": "Function", "start_line": 44, "end_line": 67, "tags": { "PURPOSE": "List all configured environments.", "PRE": "config_manager is injected via Depends.", "POST": "Returns a list of EnvironmentResponse objects.", "RETURN": "List[EnvironmentResponse]" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_environment_schedule", "type": "Function", "start_line": 69, "end_line": 98, "tags": { "PURPOSE": "Update backup schedule for an environment.", "PRE": "Environment id exists, schedule is valid ScheduleSchema.", "POST": "Backup schedule updated and scheduler reloaded.", "PARAM": "schedule (ScheduleSchema) - The new schedule." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_environment_databases", "type": "Function", "start_line": 100, "end_line": 131, "tags": { "PURPOSE": "Fetch the list of databases from a specific environment.", "PRE": "Environment id exists.", "POST": "Returns a list of database summaries from the environment.", "PARAM": "id (str) - The environment ID.", "RETURN": "List[Dict] - List of databases." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.api.routes.migration", "type": "Module", "start_line": 1, "end_line": 76, "tags": { "SEMANTICS": "api, migration, dashboards", "PURPOSE": "API endpoints for migration operations.", "LAYER": "API" }, "relations": [ { "type": "DEPENDS_ON", "target": "backend.src.dependencies" }, { "type": "DEPENDS_ON", "target": "backend.src.models.dashboard" } ], "children": [ { "name": "get_dashboards", "type": "Function", "start_line": 17, "end_line": 40, "tags": { "PURPOSE": "Fetch all dashboards from the specified environment for the grid.", "PRE": "Environment ID must be valid.", "POST": "Returns a list of dashboard metadata.", "PARAM": "env_id (str) - The ID of the environment to fetch from.", "RETURN": "List[DashboardMetadata]" }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } }, { "name": "execute_migration", "type": "Function", "start_line": 42, "end_line": 74, "tags": { "PURPOSE": "Execute the migration of selected dashboards.", "PRE": "Selection must be valid and environments must exist.", "POST": "Starts the migration task and returns the task ID.", "PARAM": "selection (DashboardSelection) - The dashboards to migrate.", "RETURN": "Dict - {\"task_id\": str, \"message\": str}" }, "relations": [], "children": [], "compliance": { "valid": false, "issues": [ "Missing Belief State Logging: Function should use belief_scope context manager.", "Missing Belief State Logging: Function should use belief_scope context manager." ] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "PluginsRouter", "type": "Module", "start_line": 1, "end_line": 29, "tags": { "SEMANTICS": "api, router, plugins, list", "PURPOSE": "Defines the FastAPI router for plugin-related endpoints, allowing clients to list available plugins.", "LAYER": "UI (API)", "RELATION": "Depends on the PluginLoader and PluginConfig. It is included by the main app." }, "relations": [], "children": [ { "name": "list_plugins", "type": "Function", "start_line": 14, "end_line": 28, "tags": { "PURPOSE": "Retrieve a list of all available plugins.", "PRE": "plugin_loader is injected via Depends.", "POST": "Returns a list of PluginConfig objects.", "RETURN": "List[PluginConfig] - List of registered plugins." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.api.routes.mappings", "type": "Module", "start_line": 1, "end_line": 119, "tags": { "SEMANTICS": "api, mappings, database, fuzzy-matching", "PURPOSE": "API endpoints for managing database mappings and getting suggestions.", "LAYER": "API", "INVARIANT": "Mappings are persisted in the SQLite database." }, "relations": [ { "type": "DEPENDS_ON", "target": "backend.src.dependencies" }, { "type": "DEPENDS_ON", "target": "backend.src.core.database" }, { "type": "DEPENDS_ON", "target": "backend.src.services.mapping_service" } ], "children": [ { "name": "MappingCreate", "type": "DataClass", "start_line": 24, "end_line": 32, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "MappingResponse", "type": "DataClass", "start_line": 34, "end_line": 46, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "SuggestRequest", "type": "DataClass", "start_line": 48, "end_line": 52, "tags": {}, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_mappings", "type": "Function", "start_line": 54, "end_line": 71, "tags": { "PURPOSE": "List all saved database mappings.", "PRE": "db session is injected.", "POST": "Returns filtered list of DatabaseMapping records." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "create_mapping", "type": "Function", "start_line": 73, "end_line": 99, "tags": { "PURPOSE": "Create or update a database mapping.", "PRE": "mapping is valid MappingCreate, db session is injected.", "POST": "DatabaseMapping created or updated in database." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "suggest_mappings_api", "type": "Function", "start_line": 101, "end_line": 117, "tags": { "PURPOSE": "Get suggested mappings based on fuzzy matching.", "PRE": "request is valid SuggestRequest, config_manager is injected.", "POST": "Returns mapping suggestions." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "SettingsRouter", "type": "Module", "start_line": 1, "end_line": 242, "tags": { "SEMANTICS": "settings, api, router, fastapi", "PURPOSE": "Provides API endpoints for managing application settings and Superset environments.", "LAYER": "UI (API)", "INVARIANT": "All settings changes must be persisted via ConfigManager.", "PUBLIC_API": "router" }, "relations": [ { "type": "DEPENDS_ON", "target": "ConfigManager" }, { "type": "DEPENDS_ON", "target": "ConfigModels" } ], "children": [ { "name": "get_settings", "type": "Function", "start_line": 26, "end_line": 41, "tags": { "PURPOSE": "Retrieves all application settings.", "PRE": "Config manager is available.", "POST": "Returns masked AppConfig.", "RETURN": "AppConfig - The current configuration." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_global_settings", "type": "Function", "start_line": 43, "end_line": 58, "tags": { "PURPOSE": "Updates global application settings.", "PRE": "New settings are provided.", "POST": "Global settings are updated.", "PARAM": "settings (GlobalSettings) - The new global settings.", "RETURN": "GlobalSettings - The updated settings." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_environments", "type": "Function", "start_line": 60, "end_line": 70, "tags": { "PURPOSE": "Lists all configured Superset environments.", "PRE": "Config manager is available.", "POST": "Returns list of environments.", "RETURN": "List[Environment] - List of environments." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "add_environment", "type": "Function", "start_line": 72, "end_line": 106, "tags": { "PURPOSE": "Adds a new Superset environment.", "PRE": "Environment data is valid and reachable.", "POST": "Environment is added to config.", "PARAM": "env (Environment) - The environment to add.", "RETURN": "Environment - The added environment." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "update_environment", "type": "Function", "start_line": 108, "end_line": 152, "tags": { "PURPOSE": "Updates an existing Superset environment.", "PRE": "ID and valid environment data are provided.", "POST": "Environment is updated in config.", "PARAM": "env (Environment) - The updated environment data.", "RETURN": "Environment - The updated environment." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "delete_environment", "type": "Function", "start_line": 154, "end_line": 168, "tags": { "PURPOSE": "Deletes a Superset environment.", "PRE": "ID is provided.", "POST": "Environment is removed from config.", "PARAM": "id (str) - The ID of the environment to delete." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "test_environment_connection", "type": "Function", "start_line": 170, "end_line": 214, "tags": { "PURPOSE": "Tests the connection to a Superset environment.", "PRE": "ID is provided.", "POST": "Returns success or error status.", "PARAM": "id (str) - The ID of the environment to test.", "RETURN": "dict - Success message or error." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "validate_backup_path", "type": "Function", "start_line": 216, "end_line": 240, "tags": { "PURPOSE": "Validates if a backup path exists and is writable.", "PRE": "Path is provided in path_data.", "POST": "Returns success or error status.", "PARAM": "path (str) - The path to validate.", "RETURN": "dict - Validation result." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "TasksRouter", "type": "Module", "start_line": 1, "end_line": 187, "tags": { "SEMANTICS": "api, router, tasks, create, list, get", "PURPOSE": "Defines the FastAPI router for task-related endpoints, allowing clients to create, list, and get the status of tasks.", "LAYER": "UI (API)", "RELATION": "Depends on the TaskManager. It is included by the main app." }, "relations": [], "children": [ { "name": "create_task", "type": "Function", "start_line": 27, "end_line": 50, "tags": { "PURPOSE": "Create and start a new task for a given plugin.", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "plugin_id must exist and params must be valid for that plugin.", "POST": "A new task is created and started.", "RETURN": "Task - The created task instance." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "list_tasks", "type": "Function", "start_line": 53, "end_line": 73, "tags": { "PURPOSE": "Retrieve a list of tasks with pagination and optional status filter.", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "task_manager must be available.", "POST": "Returns a list of tasks.", "RETURN": "List[Task] - List of tasks." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_task", "type": "Function", "start_line": 76, "end_line": 95, "tags": { "PURPOSE": "Retrieve the details of a specific task.", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "task_id must exist.", "POST": "Returns task details or raises 404.", "RETURN": "Task - The task details." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_task_logs", "type": "Function", "start_line": 98, "end_line": 117, "tags": { "PURPOSE": "Retrieve logs for a specific task.", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "task_id must exist.", "POST": "Returns a list of log entries or raises 404.", "RETURN": "List[LogEntry] - List of log entries." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resolve_task", "type": "Function", "start_line": 120, "end_line": 142, "tags": { "PURPOSE": "Resolve a task that is awaiting mapping.", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "task must be in AWAITING_MAPPING status.", "POST": "Task is resolved and resumes execution.", "RETURN": "Task - The updated task object." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "resume_task", "type": "Function", "start_line": 145, "end_line": 167, "tags": { "PURPOSE": "Resume a task that is awaiting input (e.g., passwords).", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "task must be in AWAITING_INPUT status.", "POST": "Task resumes execution with provided input.", "RETURN": "Task - The updated task object." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "clear_tasks", "type": "Function", "start_line": 170, "end_line": 186, "tags": { "PURPOSE": "Clear tasks matching the status filter.", "PARAM": "task_manager (TaskManager) - The task manager instance.", "PRE": "task_manager is available.", "POST": "Tasks are removed from memory/persistence." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.models.task", "type": "Module", "start_line": 1, "end_line": 35, "tags": { "SEMANTICS": "database, task, record, sqlalchemy, sqlite", "PURPOSE": "Defines the database schema for task execution records.", "LAYER": "Domain", "INVARIANT": "All primary keys are UUID strings." }, "relations": [ { "type": "DEPENDS_ON", "target": "sqlalchemy" } ], "children": [ { "name": "TaskRecord", "type": "Class", "start_line": 17, "end_line": 33, "tags": { "PURPOSE": "Represents a persistent record of a task execution." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.models.connection", "type": "Module", "start_line": 1, "end_line": 34, "tags": { "SEMANTICS": "database, connection, configuration, sqlalchemy, sqlite", "PURPOSE": "Defines the database schema for external database connection configurations.", "LAYER": "Domain", "INVARIANT": "All primary keys are UUID strings." }, "relations": [ { "type": "DEPENDS_ON", "target": "sqlalchemy" } ], "children": [ { "name": "ConnectionConfig", "type": "Class", "start_line": 17, "end_line": 32, "tags": { "PURPOSE": "Stores credentials for external databases used for column mapping." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.models.mapping", "type": "Module", "start_line": 1, "end_line": 70, "tags": { "SEMANTICS": "database, mapping, environment, migration, sqlalchemy, sqlite", "PURPOSE": "Defines the database schema for environment metadata and database mappings using SQLAlchemy.", "LAYER": "Domain", "INVARIANT": "All primary keys are UUID strings.", "CONSTRAINT": "source_env_id and target_env_id must be valid environment IDs." }, "relations": [ { "type": "DEPENDS_ON", "target": "sqlalchemy" } ], "children": [ { "name": "MigrationStatus", "type": "Class", "start_line": 21, "end_line": 29, "tags": { "PURPOSE": "Enumeration of possible migration job statuses." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "Environment", "type": "Class", "start_line": 31, "end_line": 40, "tags": { "PURPOSE": "Represents a Superset instance environment." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "DatabaseMapping", "type": "Class", "start_line": 42, "end_line": 55, "tags": { "PURPOSE": "Represents a mapping between source and target databases." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "MigrationJob", "type": "Class", "start_line": 57, "end_line": 68, "tags": { "PURPOSE": "Represents a single migration execution job." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.models.dashboard", "type": "Module", "start_line": 1, "end_line": 28, "tags": { "SEMANTICS": "dashboard, model, metadata, migration", "PURPOSE": "Defines data models for dashboard metadata and selection.", "LAYER": "Model" }, "relations": [ { "type": "USED_BY", "target": "backend.src.api.routes.migration" } ], "children": [ { "name": "DashboardMetadata", "type": "Class", "start_line": 10, "end_line": 17, "tags": { "PURPOSE": "Represents a dashboard available for migration." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "DashboardSelection", "type": "Class", "start_line": 19, "end_line": 26, "tags": { "PURPOSE": "Represents the user's selection of dashboards to migrate." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "backend.src.services.mapping_service", "type": "Module", "start_line": 1, "end_line": 82, "tags": { "SEMANTICS": "service, mapping, fuzzy-matching, superset", "PURPOSE": "Orchestrates database fetching and fuzzy matching suggestions.", "LAYER": "Service", "INVARIANT": "Suggestions are based on database names." }, "relations": [ { "type": "DEPENDS_ON", "target": "backend.src.core.superset_client" }, { "type": "DEPENDS_ON", "target": "backend.src.core.utils.matching" } ], "children": [ { "name": "MappingService", "type": "Class", "start_line": 19, "end_line": 80, "tags": { "PURPOSE": "Service for handling database mapping logic." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 23, "end_line": 31, "tags": { "PURPOSE": "Initializes the mapping service with a config manager.", "PRE": "config_manager is provided.", "PARAM": "config_manager (ConfigManager) - The configuration manager.", "POST": "Service is initialized." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_get_client", "type": "Function", "start_line": 33, "end_line": 57, "tags": { "PURPOSE": "Helper to get an initialized SupersetClient for an environment.", "PARAM": "env_id (str) - The ID of the environment.", "PRE": "environment must exist in config.", "POST": "Returns an initialized SupersetClient.", "RETURN": "SupersetClient - Initialized client." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_suggestions", "type": "Function", "start_line": 59, "end_line": 78, "tags": { "PURPOSE": "Fetches databases from both environments and returns fuzzy matching suggestions.", "PARAM": "target_env_id (str) - Target environment ID.", "PRE": "Both environments must be accessible.", "POST": "Returns fuzzy-matched database suggestions.", "RETURN": "List[Dict] - Suggested mappings." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "BackupPlugin", "type": "Module", "start_line": 1, "end_line": 192, "tags": { "SEMANTICS": "backup, superset, automation, dashboard, plugin", "PURPOSE": "A plugin that provides functionality to back up Superset dashboards.", "LAYER": "App" }, "relations": [ { "type": "IMPLEMENTS", "target": "PluginBase" }, { "type": "DEPENDS_ON", "target": "superset_tool.client" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils" } ], "children": [ { "name": "BackupPlugin", "type": "Class", "start_line": 29, "end_line": 191, "tags": { "PURPOSE": "Implementation of the backup plugin logic." }, "relations": [], "children": [ { "name": "id", "type": "Function", "start_line": 37, "end_line": 45, "tags": { "PURPOSE": "Returns the unique identifier for the backup plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string ID.", "RETURN": "str - \"superset-backup\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "name", "type": "Function", "start_line": 48, "end_line": 56, "tags": { "PURPOSE": "Returns the human-readable name of the backup plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string name.", "RETURN": "str - Plugin name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "description", "type": "Function", "start_line": 59, "end_line": 67, "tags": { "PURPOSE": "Returns a description of the backup plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string description.", "RETURN": "str - Plugin description." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "version", "type": "Function", "start_line": 70, "end_line": 78, "tags": { "PURPOSE": "Returns the version of the backup plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string version.", "RETURN": "str - \"1.0.0\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_schema", "type": "Function", "start_line": 80, "end_line": 109, "tags": { "PURPOSE": "Returns the JSON schema for backup plugin parameters.", "PRE": "Plugin instance exists.", "POST": "Returns dictionary schema.", "RETURN": "Dict[str, Any] - JSON schema." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "execute", "type": "Function", "start_line": 111, "end_line": 190, "tags": { "PURPOSE": "Executes the dashboard backup logic.", "PARAM": "params (Dict[str, Any]) - Backup parameters (env, backup_path).", "PRE": "Target environment must be configured. params must be a dictionary.", "POST": "All dashboards are exported and archived." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "DebugPluginModule", "type": "Module", "start_line": 1, "end_line": 187, "tags": { "SEMANTICS": "plugin, debug, api, database, superset", "PURPOSE": "Implements a plugin for system diagnostics and debugging Superset API responses.", "LAYER": "Plugins", "RELATION": "Inherits from PluginBase. Uses SupersetClient from core.", "CONSTRAINT": "Must use belief_scope for logging." }, "relations": [], "children": [ { "name": "DebugPlugin", "type": "Class", "start_line": 15, "end_line": 186, "tags": { "PURPOSE": "Plugin for system diagnostics and debugging." }, "relations": [], "children": [ { "name": "id", "type": "Function", "start_line": 23, "end_line": 31, "tags": { "PURPOSE": "Returns the unique identifier for the debug plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string ID.", "RETURN": "str - \"system-debug\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "name", "type": "Function", "start_line": 34, "end_line": 42, "tags": { "PURPOSE": "Returns the human-readable name of the debug plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string name.", "RETURN": "str - Plugin name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "description", "type": "Function", "start_line": 45, "end_line": 53, "tags": { "PURPOSE": "Returns a description of the debug plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string description.", "RETURN": "str - Plugin description." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "version", "type": "Function", "start_line": 56, "end_line": 64, "tags": { "PURPOSE": "Returns the version of the debug plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string version.", "RETURN": "str - \"1.0.0\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_schema", "type": "Function", "start_line": 66, "end_line": 105, "tags": { "PURPOSE": "Returns the JSON schema for the debug plugin parameters.", "PRE": "Plugin instance exists.", "POST": "Returns dictionary schema.", "RETURN": "Dict[str, Any] - JSON schema." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "execute", "type": "Function", "start_line": 107, "end_line": 123, "tags": { "PURPOSE": "Executes the debug logic.", "PARAM": "params (Dict[str, Any]) - Debug parameters.", "PRE": "action must be provided in params.", "POST": "Debug action is executed and results returned.", "RETURN": "Dict[str, Any] - Execution results." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_test_db_api", "type": "Function", "start_line": 125, "end_line": 157, "tags": { "PURPOSE": "Tests database API connectivity for source and target environments.", "PRE": "source_env and target_env params exist in params.", "POST": "Returns DB counts for both envs.", "PARAM": "params (Dict) - Plugin parameters.", "RETURN": "Dict - Comparison results." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_get_dataset_structure", "type": "Function", "start_line": 159, "end_line": 184, "tags": { "PURPOSE": "Retrieves the structure of a dataset.", "PRE": "env and dataset_id params exist in params.", "POST": "Returns dataset JSON structure.", "PARAM": "params (Dict) - Plugin parameters.", "RETURN": "Dict - Dataset structure." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "SearchPluginModule", "type": "Module", "start_line": 1, "end_line": 202, "tags": { "SEMANTICS": "plugin, search, datasets, regex, superset", "PURPOSE": "Implements a plugin for searching text patterns across all datasets in a specific Superset environment.", "LAYER": "Plugins", "RELATION": "Inherits from PluginBase. Uses SupersetClient from core.", "CONSTRAINT": "Must use belief_scope for logging." }, "relations": [], "children": [ { "name": "SearchPlugin", "type": "Class", "start_line": 16, "end_line": 201, "tags": { "PURPOSE": "Plugin for searching text patterns in Superset datasets." }, "relations": [], "children": [ { "name": "id", "type": "Function", "start_line": 24, "end_line": 32, "tags": { "PURPOSE": "Returns the unique identifier for the search plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string ID.", "RETURN": "str - \"search-datasets\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "name", "type": "Function", "start_line": 35, "end_line": 43, "tags": { "PURPOSE": "Returns the human-readable name of the search plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string name.", "RETURN": "str - Plugin name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "description", "type": "Function", "start_line": 46, "end_line": 54, "tags": { "PURPOSE": "Returns a description of the search plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string description.", "RETURN": "str - Plugin description." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "version", "type": "Function", "start_line": 57, "end_line": 65, "tags": { "PURPOSE": "Returns the version of the search plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string version.", "RETURN": "str - \"1.0.0\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_schema", "type": "Function", "start_line": 67, "end_line": 90, "tags": { "PURPOSE": "Returns the JSON schema for the search plugin parameters.", "PRE": "Plugin instance exists.", "POST": "Returns dictionary schema.", "RETURN": "Dict[str, Any] - JSON schema." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "execute", "type": "Function", "start_line": 92, "end_line": 161, "tags": { "PURPOSE": "Executes the dataset search logic.", "PARAM": "params (Dict[str, Any]) - Search parameters.", "PRE": "Params contain valid 'env' and 'query'.", "POST": "Returns a dictionary with count and results list.", "RETURN": "Dict[str, Any] - Search results." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "_get_context", "type": "Function", "start_line": 163, "end_line": 199, "tags": { "PURPOSE": "Extracts a small context around the match for display.", "PARAM": "context_lines (int) - Number of lines of context to include.", "PRE": "text and match_text must be strings.", "POST": "Returns context string.", "RETURN": "str - Extracted context." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "MapperPluginModule", "type": "Module", "start_line": 1, "end_line": 198, "tags": { "SEMANTICS": "plugin, mapper, datasets, postgresql, excel", "PURPOSE": "Implements a plugin for mapping dataset columns using external database connections or Excel files.", "LAYER": "Plugins", "RELATION": "Inherits from PluginBase. Uses DatasetMapper from superset_tool.", "CONSTRAINT": "Must use belief_scope for logging." }, "relations": [], "children": [ { "name": "MapperPlugin", "type": "Class", "start_line": 19, "end_line": 197, "tags": { "PURPOSE": "Plugin for mapping dataset columns verbose names." }, "relations": [], "children": [ { "name": "id", "type": "Function", "start_line": 27, "end_line": 35, "tags": { "PURPOSE": "Returns the unique identifier for the mapper plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string ID.", "RETURN": "str - \"dataset-mapper\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "name", "type": "Function", "start_line": 38, "end_line": 46, "tags": { "PURPOSE": "Returns the human-readable name of the mapper plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string name.", "RETURN": "str - Plugin name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "description", "type": "Function", "start_line": 49, "end_line": 57, "tags": { "PURPOSE": "Returns a description of the mapper plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string description.", "RETURN": "str - Plugin description." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "version", "type": "Function", "start_line": 60, "end_line": 68, "tags": { "PURPOSE": "Returns the version of the mapper plugin.", "PRE": "Plugin instance exists.", "POST": "Returns string version.", "RETURN": "str - \"1.0.0\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_schema", "type": "Function", "start_line": 70, "end_line": 120, "tags": { "PURPOSE": "Returns the JSON schema for the mapper plugin parameters.", "PRE": "Plugin instance exists.", "POST": "Returns dictionary schema.", "RETURN": "Dict[str, Any] - JSON schema." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "execute", "type": "Function", "start_line": 122, "end_line": 195, "tags": { "PURPOSE": "Executes the dataset mapping logic.", "PARAM": "params (Dict[str, Any]) - Mapping parameters.", "PRE": "Params contain valid 'env', 'dataset_id', and 'source'. params must be a dictionary.", "POST": "Updates the dataset in Superset.", "RETURN": "Dict[str, Any] - Execution status." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "MigrationPlugin", "type": "Module", "start_line": 1, "end_line": 390, "tags": { "SEMANTICS": "migration, superset, automation, dashboard, plugin", "PURPOSE": "A plugin that provides functionality to migrate Superset dashboards between environments.", "LAYER": "App" }, "relations": [ { "type": "IMPLEMENTS", "target": "PluginBase" }, { "type": "DEPENDS_ON", "target": "superset_tool.client" }, { "type": "DEPENDS_ON", "target": "superset_tool.utils" } ], "children": [ { "name": "MigrationPlugin", "type": "Class", "start_line": 25, "end_line": 389, "tags": { "PURPOSE": "Implementation of the migration plugin logic." }, "relations": [], "children": [ { "name": "id", "type": "Function", "start_line": 33, "end_line": 41, "tags": { "PURPOSE": "Returns the unique identifier for the migration plugin.", "PRE": "None.", "POST": "Returns \"superset-migration\".", "RETURN": "str - \"superset-migration\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "name", "type": "Function", "start_line": 44, "end_line": 52, "tags": { "PURPOSE": "Returns the human-readable name of the migration plugin.", "PRE": "None.", "POST": "Returns the plugin name.", "RETURN": "str - Plugin name." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "description", "type": "Function", "start_line": 55, "end_line": 63, "tags": { "PURPOSE": "Returns a description of the migration plugin.", "PRE": "None.", "POST": "Returns the plugin description.", "RETURN": "str - Plugin description." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "version", "type": "Function", "start_line": 66, "end_line": 74, "tags": { "PURPOSE": "Returns the version of the migration plugin.", "PRE": "None.", "POST": "Returns \"1.0.0\".", "RETURN": "str - \"1.0.0\"" }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "get_schema", "type": "Function", "start_line": 76, "end_line": 125, "tags": { "PURPOSE": "Returns the JSON schema for migration plugin parameters.", "PRE": "Config manager is available.", "POST": "Returns a valid JSON schema dictionary.", "RETURN": "Dict[str, Any] - JSON schema." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "execute", "type": "Function", "start_line": 127, "end_line": 388, "tags": { "PURPOSE": "Executes the dashboard migration logic.", "PARAM": "params (Dict[str, Any]) - Migration parameters.", "PRE": "Source and target environments must be configured.", "POST": "Selected dashboards are migrated." }, "relations": [], "children": [ { "name": "MigrationPlugin.execute", "type": "Action", "start_line": 147, "end_line": 387, "tags": { "PURPOSE": "Execute the migration logic with proper task logging." }, "relations": [], "children": [ { "name": "__init__", "type": "Function", "start_line": 154, "end_line": 162, "tags": { "PURPOSE": "Initializes the proxy logger.", "PRE": "None.", "POST": "Instance is initialized." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "debug", "type": "Function", "start_line": 164, "end_line": 171, "tags": { "PURPOSE": "Logs a debug message to the task manager.", "PRE": "msg is a string.", "POST": "Log is added to task manager if task_id exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "info", "type": "Function", "start_line": 173, "end_line": 180, "tags": { "PURPOSE": "Logs an info message to the task manager.", "PRE": "msg is a string.", "POST": "Log is added to task manager if task_id exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "warning", "type": "Function", "start_line": 182, "end_line": 189, "tags": { "PURPOSE": "Logs a warning message to the task manager.", "PRE": "msg is a string.", "POST": "Log is added to task manager if task_id exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "error", "type": "Function", "start_line": 191, "end_line": 198, "tags": { "PURPOSE": "Logs an error message to the task manager.", "PRE": "msg is a string.", "POST": "Log is added to task manager if task_id exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "critical", "type": "Function", "start_line": 200, "end_line": 207, "tags": { "PURPOSE": "Logs a critical message to the task manager.", "PRE": "msg is a string.", "POST": "Log is added to task manager if task_id exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "exception", "type": "Function", "start_line": 209, "end_line": 216, "tags": { "PURPOSE": "Logs an exception message to the task manager.", "PRE": "msg is a string.", "POST": "Log is added to task manager if task_id exists." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } } ], "compliance": { "valid": true, "issues": [] } }, { "name": "test_superset_config_url_normalization", "type": "Function", "start_line": 5, "end_line": 41, "tags": { "PURPOSE": "Tests that SupersetConfig correctly normalizes the base URL.", "PRE": "SupersetConfig class is available.", "POST": "URL normalization is verified." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "test_superset_config_invalid_url", "type": "Function", "start_line": 43, "end_line": 62, "tags": { "PURPOSE": "Tests that SupersetConfig raises ValueError for invalid URLs.", "PRE": "SupersetConfig class is available.", "POST": "ValueError is raised for invalid URLs." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "test_belief_scope_logs_entry_action_exit", "type": "Function", "start_line": 5, "end_line": 22, "tags": { "PURPOSE": "Test that belief_scope generates [ID][Entry], [ID][Action], and [ID][Exit] logs.", "PRE": "belief_scope is available. caplog fixture is used.", "POST": "Logs are verified to contain Entry, Action, and Exit tags." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "test_belief_scope_error_handling", "type": "Function", "start_line": 25, "end_line": 42, "tags": { "PURPOSE": "Test that belief_scope logs Coherence:Failed on exception.", "PRE": "belief_scope is available. caplog fixture is used.", "POST": "Logs are verified to contain Coherence:Failed tag." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } }, { "name": "test_belief_scope_success_coherence", "type": "Function", "start_line": 45, "end_line": 59, "tags": { "PURPOSE": "Test that belief_scope logs Coherence:OK on success.", "PRE": "belief_scope is available. caplog fixture is used.", "POST": "Logs are verified to contain Coherence:OK tag." }, "relations": [], "children": [], "compliance": { "valid": true, "issues": [] } } ] }