7256 lines
277 KiB
JSON
7256 lines
277 KiB
JSON
{
|
|
"project_root": ".",
|
|
"generated_at": "2026-01-01T16:57:12.629465",
|
|
"modules": [
|
|
{
|
|
"name": "generate_semantic_map",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 439,
|
|
"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": "SemanticEntity",
|
|
"type": "Class",
|
|
"start_line": 40,
|
|
"end_line": 121,
|
|
"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": "to_dict",
|
|
"type": "Function",
|
|
"start_line": 56,
|
|
"end_line": 73,
|
|
"tags": {
|
|
"PURPOSE": "Serializes the entity to a dictionary for JSON output.",
|
|
"RETURN": "Dict representation of the entity."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "validate",
|
|
"type": "Function",
|
|
"start_line": 75,
|
|
"end_line": 97,
|
|
"tags": {
|
|
"PURPOSE": "Checks for semantic compliance (closure, mandatory tags).",
|
|
"POST": "Populates self.compliance_issues."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "get_score",
|
|
"type": "Function",
|
|
"start_line": 99,
|
|
"end_line": 120,
|
|
"tags": {
|
|
"PURPOSE": "Calculates a compliance score (0.0 to 1.0).",
|
|
"RETURN": "Float score."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "get_patterns",
|
|
"type": "Function",
|
|
"start_line": 124,
|
|
"end_line": 146,
|
|
"tags": {
|
|
"PURPOSE": "Returns regex patterns for a specific language.",
|
|
"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": 149,
|
|
"end_line": 249,
|
|
"tags": {
|
|
"PURPOSE": "Parses a single file to extract semantic entities.",
|
|
"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": 252,
|
|
"end_line": 433,
|
|
"tags": {
|
|
"PURPOSE": "Orchestrates the mapping process."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "run",
|
|
"type": "Function",
|
|
"start_line": 261,
|
|
"end_line": 270,
|
|
"tags": {
|
|
"PURPOSE": "Main execution flow."
|
|
},
|
|
"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": 272,
|
|
"end_line": 297,
|
|
"tags": {
|
|
"PURPOSE": "Recursively walks directories and triggers parsing."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "_process_file_results",
|
|
"type": "Function",
|
|
"start_line": 299,
|
|
"end_line": 317,
|
|
"tags": {
|
|
"PURPOSE": "Validates entities and calculates file scores."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "_generate_artifacts",
|
|
"type": "Function",
|
|
"start_line": 319,
|
|
"end_line": 339,
|
|
"tags": {
|
|
"PURPOSE": "Writes output files."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "_generate_report",
|
|
"type": "Function",
|
|
"start_line": 341,
|
|
"end_line": 378,
|
|
"tags": {
|
|
"PURPOSE": "Generates the Markdown compliance report."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "_collect_issues",
|
|
"type": "Function",
|
|
"start_line": 380,
|
|
"end_line": 387,
|
|
"tags": {
|
|
"PURPOSE": "Helper to collect issues for a specific file from the entity tree."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "_generate_compressed_map",
|
|
"type": "Function",
|
|
"start_line": 389,
|
|
"end_line": 402,
|
|
"tags": {
|
|
"PURPOSE": "Generates the token-optimized project map."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "_write_entity_md",
|
|
"type": "Function",
|
|
"start_line": 404,
|
|
"end_line": 431,
|
|
"tags": {
|
|
"PURPOSE": "Recursive helper to write entity tree to Markdown."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "search_script",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 204,
|
|
"tags": {
|
|
"SEMANTICS": "search, superset, dataset, regex, file_output",
|
|
"PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 Superset.",
|
|
"LAYER": "App",
|
|
"PUBLIC_API": "search_datasets, save_results_to_file, print_search_results, main"
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.client"
|
|
},
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils"
|
|
}
|
|
],
|
|
"children": [
|
|
{
|
|
"name": "search_datasets",
|
|
"type": "Function",
|
|
"start_line": 22,
|
|
"end_line": 79,
|
|
"tags": {
|
|
"PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u043c\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0443 \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0435\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432.",
|
|
"PRE": "`search_pattern` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \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\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043f\u043e\u0438\u0441\u043a\u0430, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447 - ID \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 - \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439.",
|
|
"THROW": "SupersetAPIError, RequestException - \u041f\u0440\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 API.",
|
|
"PARAM": "logger (Optional[SupersetLogger]) - \u0418\u043d\u0441\u0442\u0430\u043d\u0441 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.",
|
|
"RETURN": "Optional[Dict] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0438\u043b\u0438 None, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "client.get_datasets"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "save_results_to_file",
|
|
"type": "Function",
|
|
"start_line": 81,
|
|
"end_line": 102,
|
|
"tags": {
|
|
"PURPOSE": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b.",
|
|
"PRE": "`filename` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u043a \u0444\u0430\u0439\u043b\u0443.",
|
|
"POST": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.",
|
|
"PARAM": "logger (Optional[SupersetLogger]) - \u0418\u043d\u0441\u0442\u0430\u043d\u0441 \u043b\u043e\u0433\u0433\u0435\u0440\u0430.",
|
|
"RETURN": "bool - \u0423\u0441\u043f\u0435\u0448\u043d\u043e \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "print_search_results",
|
|
"type": "Function",
|
|
"start_line": 104,
|
|
"end_line": 163,
|
|
"tags": {
|
|
"PURPOSE": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c.",
|
|
"PRE": "`results` \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u043c `search_datasets`, \u0438\u043b\u0438 `None`.",
|
|
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438.",
|
|
"PARAM": "context_lines (int) - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f.",
|
|
"RETURN": "str - \u041e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "main",
|
|
"type": "Function",
|
|
"start_line": 165,
|
|
"end_line": 199,
|
|
"tags": {
|
|
"PURPOSE": "\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u043e\u0438\u0441\u043a\u0430."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "setup_clients"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "search_datasets"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "print_search_results"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "save_results_to_file"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "get_dataset_structure",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 64,
|
|
"tags": {
|
|
"SEMANTICS": "superset, dataset, structure, debug, json",
|
|
"PURPOSE": "\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438\u0437 Superset. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 API.",
|
|
"LAYER": "App",
|
|
"PUBLIC_API": "get_and_save_dataset"
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.client"
|
|
},
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils.init_clients"
|
|
},
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils.logger"
|
|
}
|
|
],
|
|
"children": [
|
|
{
|
|
"name": "get_and_save_dataset",
|
|
"type": "Function",
|
|
"start_line": 18,
|
|
"end_line": 53,
|
|
"tags": {
|
|
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438\u0437 Superset \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0435 \u0432 JSON-\u0444\u0430\u0439\u043b.",
|
|
"PARAM": "output_path (str) - \u041f\u0443\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f JSON-\u0444\u0430\u0439\u043b\u0430."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "setup_clients"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "superset_client.get_dataset"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "debug_db_api",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 79,
|
|
"tags": {
|
|
"SEMANTICS": "debug, api, database, script",
|
|
"PURPOSE": "\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0442\u0432\u0435\u0442\u0430 API \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.",
|
|
"LAYER": "App",
|
|
"PUBLIC_API": "debug_database_api"
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.client"
|
|
},
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils"
|
|
}
|
|
],
|
|
"children": [
|
|
{
|
|
"name": "debug_database_api",
|
|
"type": "Function",
|
|
"start_line": 18,
|
|
"end_line": 74,
|
|
"tags": {
|
|
"PURPOSE": "\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0442\u0432\u0435\u0442\u0430 API \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "setup_clients"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "client.get_databases"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "run_mapper",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 72,
|
|
"tags": {
|
|
"SEMANTICS": "runner, configuration, cli, main",
|
|
"PURPOSE": "\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f CLI-\u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432.",
|
|
"LAYER": "App",
|
|
"PUBLIC_API": "main"
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils.dataset_mapper"
|
|
},
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils"
|
|
}
|
|
],
|
|
"children": [
|
|
{
|
|
"name": "main",
|
|
"type": "Function",
|
|
"start_line": 18,
|
|
"end_line": 67,
|
|
"tags": {
|
|
"PURPOSE": "\u041f\u0430\u0440\u0441\u0438\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CREATES_INSTANCE_OF",
|
|
"target": "DatasetMapper"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "setup_clients"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "DatasetMapper.run_mapping"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "migration_script",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 401,
|
|
"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": 396,
|
|
"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": "Migration.__init__",
|
|
"type": "Function",
|
|
"start_line": 33,
|
|
"end_line": 50,
|
|
"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.",
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration.run",
|
|
"type": "Function",
|
|
"start_line": 52,
|
|
"end_line": 69,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration.ask_delete_on_failure",
|
|
"type": "Function",
|
|
"start_line": 71,
|
|
"end_line": 84,
|
|
"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.",
|
|
"POST": "`self.enable_delete_on_failure` \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "yesno"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration.select_environments",
|
|
"type": "Function",
|
|
"start_line": 86,
|
|
"end_line": 125,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration.select_dashboards",
|
|
"type": "Function",
|
|
"start_line": 127,
|
|
"end_line": 182,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration.confirm_db_config_replacement",
|
|
"type": "Function",
|
|
"start_line": 184,
|
|
"end_line": 217,
|
|
"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.",
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration._select_databases",
|
|
"type": "Function",
|
|
"start_line": 219,
|
|
"end_line": 296,
|
|
"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.",
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration._batch_delete_by_ids",
|
|
"type": "Function",
|
|
"start_line": 298,
|
|
"end_line": 322,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Migration.execute_migration",
|
|
"type": "Function",
|
|
"start_line": 324,
|
|
"end_line": 394,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "backup_script",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 163,
|
|
"tags": {
|
|
"SEMANTICS": "backup, superset, automation, dashboard",
|
|
"PURPOSE": "\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 Superset.",
|
|
"LAYER": "App",
|
|
"PUBLIC_API": "BackupConfig, backup_dashboards, main"
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.client"
|
|
},
|
|
{
|
|
"type": "DEPENDS_ON",
|
|
"target": "superset_tool.utils"
|
|
}
|
|
],
|
|
"children": [
|
|
{
|
|
"name": "BackupConfig",
|
|
"type": "DataClass",
|
|
"start_line": 30,
|
|
"end_line": 39,
|
|
"tags": {
|
|
"PURPOSE": "\u0425\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0431\u044d\u043a\u0430\u043f\u0430."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "backup_dashboards",
|
|
"type": "Function",
|
|
"start_line": 41,
|
|
"end_line": 114,
|
|
"tags": {
|
|
"PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0431\u044d\u043a\u0430\u043f \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430.",
|
|
"PRE": "`backup_root` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0431\u044d\u043a\u0430\u043f\u0430.",
|
|
"POST": "\u0414\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f. \u041e\u0448\u0438\u0431\u043a\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u043b\u043e\u0433\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.",
|
|
"PARAM": "config (BackupConfig) - \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0431\u044d\u043a\u0430\u043f\u0430.",
|
|
"RETURN": "bool - `True` \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0431\u044b\u043b\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0431\u0435\u0437 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, `False` \u0438\u043d\u0430\u0447\u0435."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "client.get_dashboards"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "client.export_dashboard"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "save_and_unpack_dashboard"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "archive_exports"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "consolidate_archive_folders"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "remove_empty_directories"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "main",
|
|
"type": "Function",
|
|
"start_line": 116,
|
|
"end_line": 158,
|
|
"tags": {
|
|
"PURPOSE": "\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.",
|
|
"RETURN": "int - \u041a\u043e\u0434 \u0432\u044b\u0445\u043e\u0434\u0430 (0 - \u0443\u0441\u043f\u0435\u0445, 1 - \u043e\u0448\u0438\u0431\u043a\u0430)."
|
|
},
|
|
"relations": [
|
|
{
|
|
"type": "CALLS",
|
|
"target": "setup_clients"
|
|
},
|
|
{
|
|
"type": "CALLS",
|
|
"target": "backup_dashboards"
|
|
}
|
|
],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "superset_tool.exceptions",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 128,
|
|
"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": 20,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "AuthenticationError",
|
|
"type": "Class",
|
|
"start_line": 22,
|
|
"end_line": 30,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PermissionDeniedError",
|
|
"type": "Class",
|
|
"start_line": 32,
|
|
"end_line": 42,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetAPIError",
|
|
"type": "Class",
|
|
"start_line": 44,
|
|
"end_line": 52,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "ExportError",
|
|
"type": "Class",
|
|
"start_line": 54,
|
|
"end_line": 62,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "DashboardNotFoundError",
|
|
"type": "Class",
|
|
"start_line": 64,
|
|
"end_line": 73,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "DatasetNotFoundError",
|
|
"type": "Class",
|
|
"start_line": 75,
|
|
"end_line": 84,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "InvalidZipFormatError",
|
|
"type": "Class",
|
|
"start_line": 86,
|
|
"end_line": 95,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "NetworkError",
|
|
"type": "Class",
|
|
"start_line": 97,
|
|
"end_line": 105,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "FileOperationError",
|
|
"type": "Class",
|
|
"start_line": 107,
|
|
"end_line": 112,
|
|
"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": 114,
|
|
"end_line": 119,
|
|
"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": 121,
|
|
"end_line": 126,
|
|
"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",
|
|
"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.client",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 468,
|
|
"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": 466,
|
|
"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": "SupersetClient.__init__",
|
|
"type": "Function",
|
|
"start_line": 32,
|
|
"end_line": 51,
|
|
"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": "SupersetClient._validate_config",
|
|
"type": "Function",
|
|
"start_line": 53,
|
|
"end_line": 63,
|
|
"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": "SupersetClient.headers",
|
|
"type": "Function",
|
|
"start_line": 67,
|
|
"end_line": 72,
|
|
"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": "SupersetClient.get_dashboards",
|
|
"type": "Function",
|
|
"start_line": 74,
|
|
"end_line": 96,
|
|
"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": "SupersetClient.export_dashboard",
|
|
"type": "Function",
|
|
"start_line": 98,
|
|
"end_line": 121,
|
|
"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": "SupersetClient.import_dashboard",
|
|
"type": "Function",
|
|
"start_line": 123,
|
|
"end_line": 155,
|
|
"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": "SupersetClient._resolve_target_id_for_delete",
|
|
"type": "Function",
|
|
"start_line": 157,
|
|
"end_line": 180,
|
|
"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": "SupersetClient._do_import",
|
|
"type": "Function",
|
|
"start_line": 182,
|
|
"end_line": 203,
|
|
"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": "SupersetClient.delete_dashboard",
|
|
"type": "Function",
|
|
"start_line": 205,
|
|
"end_line": 221,
|
|
"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": "SupersetClient._extract_dashboard_id_from_zip",
|
|
"type": "Function",
|
|
"start_line": 223,
|
|
"end_line": 244,
|
|
"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": "SupersetClient._extract_dashboard_slug_from_zip",
|
|
"type": "Function",
|
|
"start_line": 246,
|
|
"end_line": 267,
|
|
"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": "SupersetClient._validate_export_response",
|
|
"type": "Function",
|
|
"start_line": 269,
|
|
"end_line": 283,
|
|
"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": "SupersetClient._resolve_export_filename",
|
|
"type": "Function",
|
|
"start_line": 285,
|
|
"end_line": 301,
|
|
"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": "SupersetClient._validate_query_params",
|
|
"type": "Function",
|
|
"start_line": 303,
|
|
"end_line": 313,
|
|
"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": "SupersetClient._fetch_total_object_count",
|
|
"type": "Function",
|
|
"start_line": 315,
|
|
"end_line": 329,
|
|
"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": "SupersetClient._fetch_all_pages",
|
|
"type": "Function",
|
|
"start_line": 331,
|
|
"end_line": 343,
|
|
"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": "SupersetClient._validate_import_file",
|
|
"type": "Function",
|
|
"start_line": 345,
|
|
"end_line": 359,
|
|
"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": "SupersetClient.get_datasets",
|
|
"type": "Function",
|
|
"start_line": 361,
|
|
"end_line": 382,
|
|
"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": "SupersetClient.get_databases",
|
|
"type": "Function",
|
|
"start_line": 384,
|
|
"end_line": 406,
|
|
"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": "SupersetClient.get_dataset",
|
|
"type": "Function",
|
|
"start_line": 408,
|
|
"end_line": 423,
|
|
"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": "SupersetClient.get_database",
|
|
"type": "Function",
|
|
"start_line": 425,
|
|
"end_line": 440,
|
|
"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": "SupersetClient.update_dataset",
|
|
"type": "Function",
|
|
"start_line": 442,
|
|
"end_line": 464,
|
|
"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.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": "SupersetConfig.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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetConfig.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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"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": "DatabaseConfig.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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "superset_tool.utils.logger",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 107,
|
|
"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": "SupersetLogger",
|
|
"type": "Class",
|
|
"start_line": 19,
|
|
"end_line": 105,
|
|
"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": "SupersetLogger.__init__",
|
|
"type": "Function",
|
|
"start_line": 23,
|
|
"end_line": 56,
|
|
"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": "SupersetLogger._log",
|
|
"type": "Function",
|
|
"start_line": 58,
|
|
"end_line": 67,
|
|
"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.",
|
|
"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": "SupersetLogger.info",
|
|
"type": "Function",
|
|
"start_line": 69,
|
|
"end_line": 73,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetLogger.debug",
|
|
"type": "Function",
|
|
"start_line": 75,
|
|
"end_line": 79,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetLogger.warning",
|
|
"type": "Function",
|
|
"start_line": 81,
|
|
"end_line": 85,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetLogger.error",
|
|
"type": "Function",
|
|
"start_line": 87,
|
|
"end_line": 91,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetLogger.critical",
|
|
"type": "Function",
|
|
"start_line": 93,
|
|
"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 CRITICAL."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetLogger.exception",
|
|
"type": "Function",
|
|
"start_line": 99,
|
|
"end_line": 103,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "superset_tool.utils.network",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 232,
|
|
"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": 24,
|
|
"end_line": 230,
|
|
"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": "APIClient.__init__",
|
|
"type": "Function",
|
|
"start_line": 29,
|
|
"end_line": 45,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient._init_session",
|
|
"type": "Function",
|
|
"start_line": 47,
|
|
"end_line": 61,
|
|
"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.",
|
|
"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": "APIClient.authenticate",
|
|
"type": "Function",
|
|
"start_line": 63,
|
|
"end_line": 88,
|
|
"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.",
|
|
"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": "APIClient.headers",
|
|
"type": "Function",
|
|
"start_line": 92,
|
|
"end_line": 101,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient.request",
|
|
"type": "Function",
|
|
"start_line": 103,
|
|
"end_line": 124,
|
|
"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.",
|
|
"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.",
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient._handle_http_error",
|
|
"type": "Function",
|
|
"start_line": 126,
|
|
"end_line": 136,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient._handle_network_error",
|
|
"type": "Function",
|
|
"start_line": 138,
|
|
"end_line": 147,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient.upload_file",
|
|
"type": "Function",
|
|
"start_line": 149,
|
|
"end_line": 173,
|
|
"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.",
|
|
"RETURN": "\u041e\u0442\u0432\u0435\u0442 API \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044f.",
|
|
"THROW": "SupersetAPIError, NetworkError, TypeError.",
|
|
"PARAM": "timeout (Optional[int]) - \u0422\u0430\u0439\u043c\u0430\u0443\u0442."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient._perform_upload",
|
|
"type": "Function",
|
|
"start_line": 175,
|
|
"end_line": 199,
|
|
"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.",
|
|
"RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient.fetch_paginated_count",
|
|
"type": "Function",
|
|
"start_line": 201,
|
|
"end_line": 210,
|
|
"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.",
|
|
"RETURN": "int - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "APIClient.fetch_paginated_data",
|
|
"type": "Function",
|
|
"start_line": 212,
|
|
"end_line": 228,
|
|
"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.",
|
|
"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": 104,
|
|
"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": 13,
|
|
"end_line": 29,
|
|
"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.",
|
|
"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": 31,
|
|
"end_line": 49,
|
|
"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).",
|
|
"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": 51,
|
|
"end_line": 59,
|
|
"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.",
|
|
"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": 61,
|
|
"end_line": 67,
|
|
"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."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "inputbox",
|
|
"type": "Function",
|
|
"start_line": 69,
|
|
"end_line": 78,
|
|
"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.",
|
|
"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": 80,
|
|
"end_line": 94,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "gauge",
|
|
"type": "Function",
|
|
"start_line": 96,
|
|
"end_line": 102,
|
|
"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`.",
|
|
"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": 229,
|
|
"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": 227,
|
|
"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": "DatasetMapper.get_postgres_comments",
|
|
"type": "Function",
|
|
"start_line": 26,
|
|
"end_line": 88,
|
|
"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 \u0441 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u043e\u043c `column_name` -> `column_comment`.",
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "DatasetMapper.load_excel_mappings",
|
|
"type": "Function",
|
|
"start_line": 90,
|
|
"end_line": 107,
|
|
"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 \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u043a XLSX \u0444\u0430\u0439\u043b\u0443 \u0441 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438 'column_name' \u0438 'column_comment'.",
|
|
"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.",
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "DatasetMapper.run_mapping",
|
|
"type": "Function",
|
|
"start_line": 109,
|
|
"end_line": 226,
|
|
"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.",
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"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": "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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "superset_tool.utils.fileio",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 458,
|
|
"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": 67,
|
|
"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.",
|
|
"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": 69,
|
|
"end_line": 91,
|
|
"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.",
|
|
"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": 93,
|
|
"end_line": 108,
|
|
"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.",
|
|
"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": 110,
|
|
"end_line": 119,
|
|
"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.",
|
|
"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": 121,
|
|
"end_line": 128,
|
|
"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": 130,
|
|
"end_line": 210,
|
|
"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.",
|
|
"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": 212,
|
|
"end_line": 243,
|
|
"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.",
|
|
"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": 245,
|
|
"end_line": 273,
|
|
"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.",
|
|
"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": 275,
|
|
"end_line": 294,
|
|
"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.",
|
|
"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": 296,
|
|
"end_line": 355,
|
|
"tags": {
|
|
"PURPOSE": "(Helper) \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d YAML \u0444\u0430\u0439\u043b.",
|
|
"PARAM": "logger (SupersetLogger) - \u041b\u043e\u0433\u0433\u0435\u0440."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "create_dashboard_export",
|
|
"type": "Function",
|
|
"start_line": 357,
|
|
"end_line": 382,
|
|
"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.",
|
|
"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": 384,
|
|
"end_line": 390,
|
|
"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.",
|
|
"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": 392,
|
|
"end_line": 401,
|
|
"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'.",
|
|
"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 \u0438\u043b\u0438 `None`."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "consolidate_archive_folders",
|
|
"type": "Function",
|
|
"start_line": 403,
|
|
"end_line": 456,
|
|
"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.",
|
|
"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": "App",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 113,
|
|
"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": 42,
|
|
"tags": {
|
|
"PURPOSE": "Handles form submission for task creation.",
|
|
"PARAM": "{CustomEvent} event - The submit event from DynamicForm."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "navigate",
|
|
"type": "Function",
|
|
"start_line": 44,
|
|
"end_line": 59,
|
|
"tags": {
|
|
"PURPOSE": "Changes the current page and resets state.",
|
|
"PARAM": "{string} page - Target page name."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"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": "DashboardGrid",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 205,
|
|
"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": 72,
|
|
"tags": {
|
|
"PURPOSE": "Toggles sort direction or changes sort column."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleSelectionChange",
|
|
"type": "Function",
|
|
"start_line": 74,
|
|
"end_line": 86,
|
|
"tags": {
|
|
"PURPOSE": "Handles individual checkbox changes."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleSelectAll",
|
|
"type": "Function",
|
|
"start_line": 88,
|
|
"end_line": 104,
|
|
"tags": {
|
|
"PURPOSE": "Handles select all checkbox."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "goToPage",
|
|
"type": "Function",
|
|
"start_line": 106,
|
|
"end_line": 113,
|
|
"tags": {
|
|
"PURPOSE": "Changes current page."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskHistory",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 197,
|
|
"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": 46,
|
|
"tags": {
|
|
"PURPOSE": "Fetches the list of recent tasks from the API."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "clearTasks",
|
|
"type": "Function",
|
|
"start_line": 48,
|
|
"end_line": 65,
|
|
"tags": {
|
|
"PURPOSE": "Clears tasks from the history, optionally filtered by status."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "selectTask",
|
|
"type": "Function",
|
|
"start_line": 67,
|
|
"end_line": 85,
|
|
"tags": {
|
|
"PURPOSE": "Selects a task and fetches its full details."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "getStatusColor",
|
|
"type": "Function",
|
|
"start_line": 87,
|
|
"end_line": 99,
|
|
"tags": {
|
|
"PURPOSE": "Returns the CSS color class for a given task status."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "onMount",
|
|
"type": "Function",
|
|
"start_line": 101,
|
|
"end_line": 107,
|
|
"tags": {
|
|
"PURPOSE": "Initializes the component by fetching tasks and starting polling."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "onDestroy",
|
|
"type": "Function",
|
|
"start_line": 109,
|
|
"end_line": 114,
|
|
"tags": {
|
|
"PURPOSE": "Cleans up the polling interval when the component is destroyed."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MappingTable",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 94,
|
|
"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": 32,
|
|
"tags": {
|
|
"PURPOSE": "Updates a mapping for a specific source database."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "getSuggestion",
|
|
"type": "Function",
|
|
"start_line": 34,
|
|
"end_line": 41,
|
|
"tags": {
|
|
"PURPOSE": "Finds a suggestion for a source database."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "EnvSelector",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 58,
|
|
"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": 34,
|
|
"tags": {
|
|
"PURPOSE": "Dispatches the selection change event.",
|
|
"PARAM": "{Event} event - The change event from the select element."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskList",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 103,
|
|
"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": 31,
|
|
"tags": {
|
|
"PURPOSE": "Returns the CSS color class for a given task status."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "formatTime",
|
|
"type": "Function",
|
|
"start_line": 33,
|
|
"end_line": 43,
|
|
"tags": {
|
|
"PURPOSE": "Formats a date string using date-fns."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleTaskClick",
|
|
"type": "Function",
|
|
"start_line": 45,
|
|
"end_line": 50,
|
|
"tags": {
|
|
"PURPOSE": "Dispatches a select event when a task is clicked."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "DynamicForm",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 88,
|
|
"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": 31,
|
|
"tags": {
|
|
"PURPOSE": "Dispatches the submit event with the form data."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "initializeForm",
|
|
"type": "Function",
|
|
"start_line": 33,
|
|
"end_line": 44,
|
|
"tags": {
|
|
"PURPOSE": "Initialize form data with default values from the schema."
|
|
},
|
|
"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": "Navbar",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 46,
|
|
"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": "TaskRunner",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 379,
|
|
"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": 130,
|
|
"tags": {
|
|
"PURPOSE": "Establishes WebSocket connection with exponential backoff."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "fetchTargetDatabases",
|
|
"type": "Function",
|
|
"start_line": 132,
|
|
"end_line": 152,
|
|
"tags": {
|
|
"PURPOSE": "Fetches the list of databases in the target environment."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleMappingResolve",
|
|
"type": "Function",
|
|
"start_line": 154,
|
|
"end_line": 195,
|
|
"tags": {
|
|
"PURPOSE": "Handles the resolution of a missing database mapping."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handlePasswordResume",
|
|
"type": "Function",
|
|
"start_line": 197,
|
|
"end_line": 217,
|
|
"tags": {
|
|
"PURPOSE": "Handles the submission of database passwords to resume a task."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "startDataTimeout",
|
|
"type": "Function",
|
|
"start_line": 219,
|
|
"end_line": 229,
|
|
"tags": {
|
|
"PURPOSE": "Starts a timeout to detect when the log stream has stalled."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "resetDataTimeout",
|
|
"type": "Function",
|
|
"start_line": 231,
|
|
"end_line": 238,
|
|
"tags": {
|
|
"PURPOSE": "Resets the data stall timeout."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "onMount",
|
|
"type": "Function",
|
|
"start_line": 240,
|
|
"end_line": 265,
|
|
"tags": {
|
|
"PURPOSE": "Initializes the component and subscribes to task selection changes."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "onDestroy",
|
|
"type": "Function",
|
|
"start_line": 267,
|
|
"end_line": 279,
|
|
"tags": {
|
|
"PURPOSE": "Close WebSocket connection when the component is destroyed."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskLogViewer",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 171,
|
|
"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": 40,
|
|
"tags": {
|
|
"PURPOSE": "Fetches logs for the current task."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "scrollToBottom",
|
|
"type": "Function",
|
|
"start_line": 42,
|
|
"end_line": 51,
|
|
"tags": {
|
|
"PURPOSE": "Scrolls the log container to the bottom."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleScroll",
|
|
"type": "Function",
|
|
"start_line": 53,
|
|
"end_line": 62,
|
|
"tags": {
|
|
"PURPOSE": "Updates auto-scroll preference based on scroll position."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "close",
|
|
"type": "Function",
|
|
"start_line": 64,
|
|
"end_line": 70,
|
|
"tags": {
|
|
"PURPOSE": "Closes the log viewer modal."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "getLogLevelColor",
|
|
"type": "Function",
|
|
"start_line": 72,
|
|
"end_line": 83,
|
|
"tags": {
|
|
"PURPOSE": "Returns the CSS color class for a given log level."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "onDestroy",
|
|
"type": "Function",
|
|
"start_line": 100,
|
|
"end_line": 105,
|
|
"tags": {
|
|
"PURPOSE": "Cleans up the polling interval."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PasswordPrompt",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 129,
|
|
"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": 37,
|
|
"tags": {
|
|
"PURPOSE": "Validates and dispatches the passwords to resume the task."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleCancel",
|
|
"type": "Function",
|
|
"start_line": 39,
|
|
"end_line": 45,
|
|
"tags": {
|
|
"PURPOSE": "Cancels the password prompt."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MissingMappingModal",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 114,
|
|
"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": 37,
|
|
"tags": {
|
|
"PURPOSE": "Dispatches the resolution event with the selected mapping."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "cancel",
|
|
"type": "Function",
|
|
"start_line": 39,
|
|
"end_line": 45,
|
|
"tags": {
|
|
"PURPOSE": "Cancels the mapping resolution modal."
|
|
},
|
|
"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": "Settings",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 333,
|
|
"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": 65,
|
|
"tags": {
|
|
"PURPOSE": "Loads settings from the backend."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleSaveGlobal",
|
|
"type": "Function",
|
|
"start_line": 67,
|
|
"end_line": 82,
|
|
"tags": {
|
|
"PURPOSE": "Saves global settings to the backend."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleAddOrUpdateEnv",
|
|
"type": "Function",
|
|
"start_line": 84,
|
|
"end_line": 106,
|
|
"tags": {
|
|
"PURPOSE": "Adds or updates an environment."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleDeleteEnv",
|
|
"type": "Function",
|
|
"start_line": 108,
|
|
"end_line": 127,
|
|
"tags": {
|
|
"PURPOSE": "Deletes an environment.",
|
|
"PARAM": "{string} id - The ID of the environment to delete."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleTestEnv",
|
|
"type": "Function",
|
|
"start_line": 129,
|
|
"end_line": 150,
|
|
"tags": {
|
|
"PURPOSE": "Tests the connection to an environment.",
|
|
"PARAM": "{string} id - The ID of the environment to test."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "editEnv",
|
|
"type": "Function",
|
|
"start_line": 152,
|
|
"end_line": 161,
|
|
"tags": {
|
|
"PURPOSE": "Sets the form to edit an existing environment.",
|
|
"PARAM": "{Object} env - The environment object to edit."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "resetEnvForm",
|
|
"type": "Function",
|
|
"start_line": 163,
|
|
"end_line": 182,
|
|
"tags": {
|
|
"PURPOSE": "Resets the environment form."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Dashboard",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 60,
|
|
"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": 25,
|
|
"tags": {
|
|
"PURPOSE": "Fetch plugins when the component mounts."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "selectPlugin",
|
|
"type": "Function",
|
|
"start_line": 27,
|
|
"end_line": 36,
|
|
"tags": {
|
|
"PURPOSE": "Selects a plugin to display its form.",
|
|
"PARAM": "{Object} plugin - The plugin object to select."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "stores_module",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 66,
|
|
"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": 51,
|
|
"tags": {
|
|
"PURPOSE": "Fetches plugins from the API and updates the plugins store."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "fetchTasks",
|
|
"type": "Function",
|
|
"start_line": 53,
|
|
"end_line": 65,
|
|
"tags": {
|
|
"PURPOSE": "Fetches tasks from the API and updates the tasks store."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "toasts_module",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 34,
|
|
"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": 24,
|
|
"tags": {
|
|
"PURPOSE": "Adds a new toast message.",
|
|
"PARAM": "duration (number) - Duration in ms before the toast is removed."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "removeToast",
|
|
"type": "Function",
|
|
"start_line": 26,
|
|
"end_line": 33,
|
|
"tags": {
|
|
"PURPOSE": "Removes a toast message by ID.",
|
|
"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": 122,
|
|
"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": 24,
|
|
"tags": {
|
|
"PURPOSE": "Returns the WebSocket URL for a specific task, with fallback logic.",
|
|
"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": 26,
|
|
"end_line": 44,
|
|
"tags": {
|
|
"PURPOSE": "Generic GET request wrapper.",
|
|
"PARAM": "endpoint (string) - API endpoint.",
|
|
"RETURN": "Promise<any> - JSON response."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "postApi",
|
|
"type": "Function",
|
|
"start_line": 46,
|
|
"end_line": 71,
|
|
"tags": {
|
|
"PURPOSE": "Generic POST request wrapper.",
|
|
"PARAM": "body (object) - Request payload.",
|
|
"RETURN": "Promise<any> - JSON response."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "requestApi",
|
|
"type": "Function",
|
|
"start_line": 73,
|
|
"end_line": 99,
|
|
"tags": {
|
|
"PURPOSE": "Generic request wrapper."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "api",
|
|
"type": "Data",
|
|
"start_line": 101,
|
|
"end_line": 120,
|
|
"tags": {
|
|
"PURPOSE": "API client object with specific methods."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MigrationDashboard",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 405,
|
|
"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": 67,
|
|
"tags": {
|
|
"PURPOSE": "Fetches the list of environments from the API.",
|
|
"POST": "environments state is updated."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "fetchDashboards",
|
|
"type": "Function",
|
|
"start_line": 69,
|
|
"end_line": 86,
|
|
"tags": {
|
|
"PURPOSE": "Fetches dashboards for the selected source environment.",
|
|
"PARAM": "envId The environment ID.",
|
|
"POST": "dashboards state is updated."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "fetchDatabases",
|
|
"type": "Function",
|
|
"start_line": 93,
|
|
"end_line": 126,
|
|
"tags": {
|
|
"PURPOSE": "Fetches databases from both environments and gets suggestions."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleMappingUpdate",
|
|
"type": "Function",
|
|
"start_line": 128,
|
|
"end_line": 161,
|
|
"tags": {
|
|
"PURPOSE": "Saves a mapping to the backend."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleViewLogs",
|
|
"type": "Function",
|
|
"start_line": 163,
|
|
"end_line": 171,
|
|
"tags": {
|
|
"PURPOSE": "Opens the log viewer for a specific task."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handlePasswordPrompt",
|
|
"type": "Function",
|
|
"start_line": 173,
|
|
"end_line": 193,
|
|
"tags": {
|
|
"PURPOSE": "Reactive logic to show password prompt when a task is awaiting input."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleResumeMigration",
|
|
"type": "Function",
|
|
"start_line": 195,
|
|
"end_line": 211,
|
|
"tags": {
|
|
"PURPOSE": "Resumes a migration task with provided passwords."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "startMigration",
|
|
"type": "Function",
|
|
"start_line": 213,
|
|
"end_line": 279,
|
|
"tags": {
|
|
"PURPOSE": "Starts the migration process.",
|
|
"PRE": "sourceEnvId and targetEnvId must be set and different."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MappingManagement",
|
|
"type": "Component",
|
|
"start_line": 1,
|
|
"end_line": 186,
|
|
"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": 46,
|
|
"tags": {
|
|
"PURPOSE": "Fetches the list of environments."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "fetchDatabases",
|
|
"type": "Function",
|
|
"start_line": 50,
|
|
"end_line": 84,
|
|
"tags": {
|
|
"PURPOSE": "Fetches databases from both environments and gets suggestions."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "handleUpdate",
|
|
"type": "Function",
|
|
"start_line": 86,
|
|
"end_line": 120,
|
|
"tags": {
|
|
"PURPOSE": "Saves a mapping to the backend."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Dependencies",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 50,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "AppModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 154,
|
|
"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": "WebSocketEndpoint",
|
|
"type": "Endpoint",
|
|
"start_line": 73,
|
|
"end_line": 128,
|
|
"tags": {
|
|
"SEMANTICS": "websocket, logs, streaming, real-time",
|
|
"PURPOSE": "Provides a WebSocket endpoint for clients to connect to and receive real-time log entries for a specific task."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "StaticFiles",
|
|
"type": "Mount",
|
|
"start_line": 130,
|
|
"end_line": 153,
|
|
"tags": {
|
|
"SEMANTICS": "static, frontend, spa",
|
|
"PURPOSE": "Mounts the frontend build directory to serve static assets."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "RootEndpoint",
|
|
"type": "Endpoint",
|
|
"start_line": 146,
|
|
"end_line": 152,
|
|
"tags": {
|
|
"SEMANTICS": "root, healthcheck",
|
|
"PURPOSE": "A simple root endpoint to confirm that the API is running."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"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.models.task",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 34,
|
|
"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": 32,
|
|
"tags": {
|
|
"PURPOSE": "Represents a persistent record of a task execution."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "backend.src.services.mapping_service",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 69,
|
|
"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": 18,
|
|
"end_line": 67,
|
|
"tags": {
|
|
"PURPOSE": "Service for handling database mapping logic."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "MappingService.__init__",
|
|
"type": "Function",
|
|
"start_line": 22,
|
|
"end_line": 26,
|
|
"tags": {
|
|
"PURPOSE": "Initializes the mapping service with a config manager."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MappingService._get_client",
|
|
"type": "Function",
|
|
"start_line": 28,
|
|
"end_line": 47,
|
|
"tags": {
|
|
"PURPOSE": "Helper to get an initialized SupersetClient for an environment."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MappingService.get_suggestions",
|
|
"type": "Function",
|
|
"start_line": 49,
|
|
"end_line": 65,
|
|
"tags": {
|
|
"PURPOSE": "Fetches databases from both environments and returns fuzzy matching suggestions.",
|
|
"PARAM": "target_env_id (str) - Target environment ID.",
|
|
"RETURN": "List[Dict] - Suggested mappings."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "ConfigManagerModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 238,
|
|
"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": 236,
|
|
"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": 49,
|
|
"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": 51,
|
|
"end_line": 81,
|
|
"tags": {
|
|
"PURPOSE": "Loads the configuration from disk or creates a default one.",
|
|
"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": 83,
|
|
"end_line": 100,
|
|
"tags": {
|
|
"PURPOSE": "Saves the provided configuration object to disk.",
|
|
"PRE": "isinstance(config, AppConfig)",
|
|
"PARAM": "config (AppConfig) - The configuration to save."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "save",
|
|
"type": "Function",
|
|
"start_line": 102,
|
|
"end_line": 106,
|
|
"tags": {
|
|
"PURPOSE": "Saves the current configuration state to disk."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "get_config",
|
|
"type": "Function",
|
|
"start_line": 108,
|
|
"end_line": 113,
|
|
"tags": {
|
|
"PURPOSE": "Returns the current configuration.",
|
|
"RETURN": "AppConfig - The current configuration."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "update_global_settings",
|
|
"type": "Function",
|
|
"start_line": 115,
|
|
"end_line": 133,
|
|
"tags": {
|
|
"PURPOSE": "Updates the global settings and persists the change.",
|
|
"PRE": "isinstance(settings, GlobalSettings)",
|
|
"PARAM": "settings (GlobalSettings) - The new global settings."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "validate_path",
|
|
"type": "Function",
|
|
"start_line": 135,
|
|
"end_line": 151,
|
|
"tags": {
|
|
"PURPOSE": "Validates if a path exists and is writable.",
|
|
"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": 153,
|
|
"end_line": 158,
|
|
"tags": {
|
|
"PURPOSE": "Returns the list of configured environments.",
|
|
"RETURN": "List[Environment] - List of environments."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "has_environments",
|
|
"type": "Function",
|
|
"start_line": 160,
|
|
"end_line": 165,
|
|
"tags": {
|
|
"PURPOSE": "Checks if at least one environment is configured.",
|
|
"RETURN": "bool - True if at least one environment exists."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "add_environment",
|
|
"type": "Function",
|
|
"start_line": 167,
|
|
"end_line": 184,
|
|
"tags": {
|
|
"PURPOSE": "Adds a new environment to the configuration.",
|
|
"PRE": "isinstance(env, Environment)",
|
|
"PARAM": "env (Environment) - The environment to add."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "update_environment",
|
|
"type": "Function",
|
|
"start_line": 186,
|
|
"end_line": 213,
|
|
"tags": {
|
|
"PURPOSE": "Updates an existing environment.",
|
|
"PRE": "isinstance(env_id, str) and len(env_id) > 0 and isinstance(updated_env, Environment)",
|
|
"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": 215,
|
|
"end_line": 234,
|
|
"tags": {
|
|
"PURPOSE": "Deletes an environment by ID.",
|
|
"PRE": "isinstance(env_id, str) and len(env_id) > 0",
|
|
"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": "backend.src.core.superset_client",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 83,
|
|
"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": 16,
|
|
"end_line": 81,
|
|
"tags": {
|
|
"PURPOSE": "Extended SupersetClient for migration-specific operations."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "SupersetClient.get_databases_summary",
|
|
"type": "Function",
|
|
"start_line": 20,
|
|
"end_line": 38,
|
|
"tags": {
|
|
"PURPOSE": "Fetch a summary of databases including uuid, name, and engine.",
|
|
"POST": "Returns a list of database dictionaries with 'engine' field.",
|
|
"RETURN": "List[Dict] - Summary of databases."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SupersetClient.get_database_by_uuid",
|
|
"type": "Function",
|
|
"start_line": 40,
|
|
"end_line": 53,
|
|
"tags": {
|
|
"PURPOSE": "Find a database by its UUID.",
|
|
"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": "SupersetClient.get_dashboards_summary",
|
|
"type": "Function",
|
|
"start_line": 55,
|
|
"end_line": 79,
|
|
"tags": {
|
|
"PURPOSE": "Fetches dashboard metadata optimized for the grid.",
|
|
"POST": "Returns a list of dashboard dictionaries.",
|
|
"RETURN": "List[Dict]"
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "backend.src.core.migration_engine",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 98,
|
|
"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": 96,
|
|
"tags": {
|
|
"PURPOSE": "Engine for transforming Superset export ZIPs."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "MigrationEngine.transform_zip",
|
|
"type": "Function",
|
|
"start_line": 26,
|
|
"end_line": 76,
|
|
"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.",
|
|
"RETURN": "bool - True if successful."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MigrationEngine._transform_yaml",
|
|
"type": "Function",
|
|
"start_line": 78,
|
|
"end_line": 94,
|
|
"tags": {
|
|
"PURPOSE": "Replaces database_uuid in a single YAML file."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "LoggerModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 188,
|
|
"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": 31,
|
|
"tags": {
|
|
"PURPOSE": "Custom logging formatter that adds belief state prefixes to log messages."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "LogEntry",
|
|
"type": "Class",
|
|
"start_line": 34,
|
|
"end_line": 43,
|
|
"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": "BeliefScope",
|
|
"type": "Function",
|
|
"start_line": 45,
|
|
"end_line": 74,
|
|
"tags": {
|
|
"PURPOSE": "Context manager for structured Belief State logging."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "ConfigureLogger",
|
|
"type": "Function",
|
|
"start_line": 76,
|
|
"end_line": 118,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "WebSocketLogHandler",
|
|
"type": "Class",
|
|
"start_line": 120,
|
|
"end_line": 161,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "Logger",
|
|
"type": "Global",
|
|
"start_line": 163,
|
|
"end_line": 187,
|
|
"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": "backend.src.core.database",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 77,
|
|
"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": 20,
|
|
"end_line": 22,
|
|
"tags": {},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TASKS_DATABASE_URL",
|
|
"type": "Constant",
|
|
"start_line": 24,
|
|
"end_line": 26,
|
|
"tags": {},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "engine",
|
|
"type": "Variable",
|
|
"start_line": 28,
|
|
"end_line": 30,
|
|
"tags": {},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "tasks_engine",
|
|
"type": "Variable",
|
|
"start_line": 32,
|
|
"end_line": 34,
|
|
"tags": {},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SessionLocal",
|
|
"type": "Class",
|
|
"start_line": 36,
|
|
"end_line": 39,
|
|
"tags": {
|
|
"PURPOSE": "A session factory for the main mappings database."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TasksSessionLocal",
|
|
"type": "Class",
|
|
"start_line": 41,
|
|
"end_line": 44,
|
|
"tags": {
|
|
"PURPOSE": "A session factory for the tasks execution database."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "init_db",
|
|
"type": "Function",
|
|
"start_line": 46,
|
|
"end_line": 51,
|
|
"tags": {
|
|
"PURPOSE": "Initializes the database by creating all tables."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "get_db",
|
|
"type": "Function",
|
|
"start_line": 53,
|
|
"end_line": 63,
|
|
"tags": {
|
|
"PURPOSE": "Dependency for getting a database session.",
|
|
"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": 65,
|
|
"end_line": 75,
|
|
"tags": {
|
|
"PURPOSE": "Dependency for getting a tasks database session.",
|
|
"POST": "Session is closed after use.",
|
|
"RETURN": "Generator[Session, None, None]"
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"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": "SchedulerModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 104,
|
|
"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": 103,
|
|
"tags": {
|
|
"SEMANTICS": "scheduler, service, apscheduler",
|
|
"PURPOSE": "Provides a service to manage scheduled backup tasks."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "SchedulerService.start",
|
|
"type": "Function",
|
|
"start_line": 27,
|
|
"end_line": 35,
|
|
"tags": {
|
|
"PURPOSE": "Starts the background scheduler and loads initial schedules."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SchedulerService.stop",
|
|
"type": "Function",
|
|
"start_line": 37,
|
|
"end_line": 44,
|
|
"tags": {
|
|
"PURPOSE": "Stops the background scheduler."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SchedulerService.load_schedules",
|
|
"type": "Function",
|
|
"start_line": 46,
|
|
"end_line": 57,
|
|
"tags": {
|
|
"PURPOSE": "Loads backup schedules from configuration and registers them."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SchedulerService.add_backup_job",
|
|
"type": "Function",
|
|
"start_line": 59,
|
|
"end_line": 77,
|
|
"tags": {
|
|
"PURPOSE": "Adds a scheduled backup job for an environment.",
|
|
"PARAM": "cron_expression (str) - The cron expression for the schedule."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SchedulerService._trigger_backup",
|
|
"type": "Function",
|
|
"start_line": 79,
|
|
"end_line": 101,
|
|
"tags": {
|
|
"PURPOSE": "Triggered by the scheduler to start a backup task.",
|
|
"PARAM": "env_id (str) - The ID of the environment."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginLoader",
|
|
"type": "Class",
|
|
"start_line": 8,
|
|
"end_line": 169,
|
|
"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": "PluginLoader.__init__",
|
|
"type": "Function",
|
|
"start_line": 19,
|
|
"end_line": 27,
|
|
"tags": {
|
|
"PURPOSE": "Initializes the PluginLoader with a directory to scan.",
|
|
"PARAM": "plugin_dir (str) - The directory containing plugin modules."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginLoader._load_plugins",
|
|
"type": "Function",
|
|
"start_line": 29,
|
|
"end_line": 50,
|
|
"tags": {
|
|
"PURPOSE": "Scans the plugin directory and loads all valid plugins."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginLoader._load_module",
|
|
"type": "Function",
|
|
"start_line": 52,
|
|
"end_line": 97,
|
|
"tags": {
|
|
"PURPOSE": "Loads a single Python module and discovers PluginBase implementations.",
|
|
"PARAM": "file_path (str) - The path to the module file."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginLoader._register_plugin",
|
|
"type": "Function",
|
|
"start_line": 99,
|
|
"end_line": 134,
|
|
"tags": {
|
|
"PURPOSE": "Registers a PluginBase instance and its configuration.",
|
|
"PARAM": "plugin_instance (PluginBase) - The plugin instance to register."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginLoader.get_plugin",
|
|
"type": "Function",
|
|
"start_line": 137,
|
|
"end_line": 146,
|
|
"tags": {
|
|
"PURPOSE": "Retrieves a loaded plugin instance by its ID.",
|
|
"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": "PluginLoader.get_all_plugin_configs",
|
|
"type": "Function",
|
|
"start_line": 148,
|
|
"end_line": 156,
|
|
"tags": {
|
|
"PURPOSE": "Returns a list of all registered plugin configurations.",
|
|
"RETURN": "List[PluginConfig] - A list of plugin configurations."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginLoader.has_plugin",
|
|
"type": "Function",
|
|
"start_line": 158,
|
|
"end_line": 167,
|
|
"tags": {
|
|
"PURPOSE": "Checks if a plugin with the given ID is registered.",
|
|
"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": "PluginBase",
|
|
"type": "Class",
|
|
"start_line": 6,
|
|
"end_line": 57,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginConfig",
|
|
"type": "Class",
|
|
"start_line": 59,
|
|
"end_line": 71,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManagerModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 376,
|
|
"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": 375,
|
|
"tags": {
|
|
"SEMANTICS": "task, manager, lifecycle, execution, state",
|
|
"PURPOSE": "Manages the lifecycle of tasks, including their creation, execution, and state tracking."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "TaskManager.__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": "TaskManager.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": "TaskManager._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": "TaskManager.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": "TaskManager.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": "TaskManager.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": "TaskManager.get_task",
|
|
"type": "Function",
|
|
"start_line": 187,
|
|
"end_line": 193,
|
|
"tags": {
|
|
"PURPOSE": "Retrieves a task by its ID.",
|
|
"PARAM": "task_id (str) - ID of the task.",
|
|
"RETURN": "Optional[Task] - The task or None."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManager.get_all_tasks",
|
|
"type": "Function",
|
|
"start_line": 195,
|
|
"end_line": 200,
|
|
"tags": {
|
|
"PURPOSE": "Retrieves all registered tasks.",
|
|
"RETURN": "List[Task] - All tasks."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManager.get_tasks",
|
|
"type": "Function",
|
|
"start_line": 202,
|
|
"end_line": 217,
|
|
"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": "TaskManager.get_task_logs",
|
|
"type": "Function",
|
|
"start_line": 219,
|
|
"end_line": 226,
|
|
"tags": {
|
|
"PURPOSE": "Retrieves logs for a specific task.",
|
|
"PARAM": "task_id (str) - ID of the task.",
|
|
"RETURN": "List[LogEntry] - List of log entries."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManager._add_log",
|
|
"type": "Function",
|
|
"start_line": 228,
|
|
"end_line": 249,
|
|
"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": "TaskManager.subscribe_logs",
|
|
"type": "Function",
|
|
"start_line": 251,
|
|
"end_line": 261,
|
|
"tags": {
|
|
"PURPOSE": "Subscribes to real-time logs for a task.",
|
|
"PARAM": "task_id (str) - ID of the task.",
|
|
"RETURN": "asyncio.Queue - Queue for log entries."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManager.unsubscribe_logs",
|
|
"type": "Function",
|
|
"start_line": 263,
|
|
"end_line": 273,
|
|
"tags": {
|
|
"PURPOSE": "Unsubscribes from real-time logs for a task.",
|
|
"PARAM": "queue (asyncio.Queue) - Queue to remove."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManager.load_persisted_tasks",
|
|
"type": "Function",
|
|
"start_line": 275,
|
|
"end_line": 282,
|
|
"tags": {
|
|
"PURPOSE": "Load persisted tasks using persistence service."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManager.await_input",
|
|
"type": "Function",
|
|
"start_line": 284,
|
|
"end_line": 304,
|
|
"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": "TaskManager.resume_task_with_password",
|
|
"type": "Function",
|
|
"start_line": 306,
|
|
"end_line": 333,
|
|
"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": "TaskManager.clear_tasks",
|
|
"type": "Function",
|
|
"start_line": 335,
|
|
"end_line": 373,
|
|
"tags": {
|
|
"PURPOSE": "Clears tasks based on status filter.",
|
|
"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": "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": "TaskCleanupModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 40,
|
|
"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": 39,
|
|
"tags": {
|
|
"PURPOSE": "Provides methods to clean up old task records."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "TaskCleanupService.run_cleanup",
|
|
"type": "Function",
|
|
"start_line": 19,
|
|
"end_line": 37,
|
|
"tags": {
|
|
"PURPOSE": "Deletes tasks older than the configured retention period."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskManagerModels",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 67,
|
|
"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": 65,
|
|
"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": "Task.__init__",
|
|
"type": "Function",
|
|
"start_line": 55,
|
|
"end_line": 64,
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskPersistenceModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 141,
|
|
"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": 140,
|
|
"tags": {
|
|
"SEMANTICS": "persistence, service, database, sqlalchemy",
|
|
"PURPOSE": "Provides methods to save and load tasks from the tasks.db database using SQLAlchemy."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "TaskPersistenceService.persist_task",
|
|
"type": "Function",
|
|
"start_line": 28,
|
|
"end_line": 68,
|
|
"tags": {
|
|
"PURPOSE": "Persists or updates a single task in the database.",
|
|
"PARAM": "task (Task) - The task object to persist."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskPersistenceService.persist_tasks",
|
|
"type": "Function",
|
|
"start_line": 70,
|
|
"end_line": 76,
|
|
"tags": {
|
|
"PURPOSE": "Persists multiple tasks.",
|
|
"PARAM": "tasks (List[Task]) - The list of tasks to persist."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskPersistenceService.load_tasks",
|
|
"type": "Function",
|
|
"start_line": 78,
|
|
"end_line": 120,
|
|
"tags": {
|
|
"PURPOSE": "Loads tasks from the database.",
|
|
"PARAM": "status (Optional[TaskStatus]) - Filter by status.",
|
|
"RETURN": "List[Task] - The loaded tasks."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "TaskPersistenceService.delete_tasks",
|
|
"type": "Function",
|
|
"start_line": 122,
|
|
"end_line": 138,
|
|
"tags": {
|
|
"PURPOSE": "Deletes specific tasks from the 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": "BackupPlugin",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 149,
|
|
"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": 28,
|
|
"end_line": 148,
|
|
"tags": {
|
|
"PURPOSE": "Implementation of the backup plugin logic."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "MigrationPlugin",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 300,
|
|
"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": 24,
|
|
"end_line": 299,
|
|
"tags": {
|
|
"PURPOSE": "Implementation of the migration plugin logic."
|
|
},
|
|
"relations": [],
|
|
"children": [
|
|
{
|
|
"name": "MigrationPlugin.execute",
|
|
"type": "Action",
|
|
"start_line": 105,
|
|
"end_line": 292,
|
|
"tags": {
|
|
"PURPOSE": "Execute the migration logic with proper task logging."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "AuthModule",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 52,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "SettingsRouter",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 218,
|
|
"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": 38,
|
|
"tags": {
|
|
"PURPOSE": "Retrieves all application settings.",
|
|
"RETURN": "AppConfig - The current configuration."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "update_global_settings",
|
|
"type": "Function",
|
|
"start_line": 40,
|
|
"end_line": 52,
|
|
"tags": {
|
|
"PURPOSE": "Updates global application settings.",
|
|
"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": 54,
|
|
"end_line": 61,
|
|
"tags": {
|
|
"PURPOSE": "Lists all configured Superset environments.",
|
|
"RETURN": "List[Environment] - List of environments."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "add_environment",
|
|
"type": "Function",
|
|
"start_line": 63,
|
|
"end_line": 94,
|
|
"tags": {
|
|
"PURPOSE": "Adds a new Superset environment.",
|
|
"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": 96,
|
|
"end_line": 137,
|
|
"tags": {
|
|
"PURPOSE": "Updates an existing Superset environment.",
|
|
"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": 139,
|
|
"end_line": 150,
|
|
"tags": {
|
|
"PURPOSE": "Deletes a Superset environment.",
|
|
"PARAM": "id (str) - The ID of the environment to delete."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "test_environment_connection",
|
|
"type": "Function",
|
|
"start_line": 152,
|
|
"end_line": 193,
|
|
"tags": {
|
|
"PURPOSE": "Tests the connection to a Superset environment.",
|
|
"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": 195,
|
|
"end_line": 216,
|
|
"tags": {
|
|
"PURPOSE": "Validates if a backup path exists and is writable.",
|
|
"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": 120,
|
|
"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": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "backend.src.api.routes.environments",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 124,
|
|
"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": 64,
|
|
"tags": {
|
|
"PURPOSE": "List all configured environments.",
|
|
"RETURN": "List[EnvironmentResponse]"
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "update_environment_schedule",
|
|
"type": "Function",
|
|
"start_line": 66,
|
|
"end_line": 92,
|
|
"tags": {
|
|
"PURPOSE": "Update backup schedule for an environment.",
|
|
"PARAM": "schedule (ScheduleSchema) - The new schedule."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "get_environment_databases",
|
|
"type": "Function",
|
|
"start_line": 94,
|
|
"end_line": 122,
|
|
"tags": {
|
|
"PURPOSE": "Fetch the list of databases from a specific environment.",
|
|
"PARAM": "id (str) - The environment ID.",
|
|
"RETURN": "List[Dict] - List of databases."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "PluginsRouter",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 22,
|
|
"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": [],
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"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": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "backend.src.api.routes.mappings",
|
|
"type": "Module",
|
|
"start_line": 1,
|
|
"end_line": 110,
|
|
"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": 68,
|
|
"tags": {
|
|
"PURPOSE": "List all saved database mappings."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "create_mapping",
|
|
"type": "Function",
|
|
"start_line": 70,
|
|
"end_line": 93,
|
|
"tags": {
|
|
"PURPOSE": "Create or update a database mapping."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
},
|
|
{
|
|
"name": "suggest_mappings_api",
|
|
"type": "Function",
|
|
"start_line": 95,
|
|
"end_line": 108,
|
|
"tags": {
|
|
"PURPOSE": "Get suggested mappings based on fuzzy matching."
|
|
},
|
|
"relations": [],
|
|
"children": [],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
],
|
|
"compliance": {
|
|
"valid": true,
|
|
"issues": []
|
|
}
|
|
}
|
|
]
|
|
} |