|  | 
| 17 | 17 | import sys | 
| 18 | 18 | import tempfile | 
| 19 | 19 | from pathlib import Path | 
|  | 20 | +from typing import Any | 
| 20 | 21 | 
 | 
| 21 | 22 | try: | 
| 22 | 23 |     import yaml | 
| @@ -79,7 +80,7 @@ def consolidate_yaml_schemas_to_json(yaml_dir_path: Path, output_json_path: Path | 
| 79 | 80 |         if isinstance(schema_content, dict) and "definitions" in schema_content: | 
| 80 | 81 |             all_schema_names.update(schema_content["definitions"].keys()) | 
| 81 | 82 | 
 | 
| 82 |  | -    def fix_refs(obj, in_definition=False): | 
|  | 83 | +    def fix_refs(obj: Any, in_definition: bool = False) -> Any: | 
| 83 | 84 |         """Recursively fix $ref and type references in schema objects.""" | 
| 84 | 85 |         if isinstance(obj, dict): | 
| 85 | 86 |             new_obj = {} | 
| @@ -117,20 +118,30 @@ def fix_refs(obj, in_definition=False): | 
| 117 | 118 |         consolidated = dict(main_schema)  # shallow copy | 
| 118 | 119 |         consolidated.setdefault("$schema", "http://json-schema.org/draft-07/schema#") | 
| 119 | 120 |         consolidated.setdefault("title", "Connector Metadata Schema") | 
| 120 |  | -        consolidated.setdefault("description", "Consolidated JSON schema for Airbyte connector metadata validation") | 
| 121 |  | -         | 
|  | 121 | +        consolidated.setdefault( | 
|  | 122 | +            "description", "Consolidated JSON schema for Airbyte connector metadata validation" | 
|  | 123 | +        ) | 
|  | 124 | + | 
| 122 | 125 |         consolidated_definitions = dict(consolidated.get("definitions", {})) | 
| 123 | 126 | 
 | 
| 124 | 127 |         # Add all schemas (including their internal definitions) as top-level definitions | 
| 125 | 128 |         for schema_name, schema_content in schemas.items(): | 
| 126 | 129 |             if schema_name != "ConnectorMetadataDefinitionV0": | 
| 127 | 130 |                 if isinstance(schema_content, dict) and "definitions" in schema_content: | 
| 128 | 131 |                     for def_name, def_content in schema_content["definitions"].items(): | 
| 129 |  | -                        consolidated_definitions[def_name] = fix_refs(def_content, in_definition=True) | 
| 130 |  | -                    schema_without_defs = {k: v for k, v in schema_content.items() if k != "definitions"} | 
| 131 |  | -                    consolidated_definitions[schema_name] = fix_refs(schema_without_defs, in_definition=True) | 
|  | 132 | +                        consolidated_definitions[def_name] = fix_refs( | 
|  | 133 | +                            def_content, in_definition=True | 
|  | 134 | +                        ) | 
|  | 135 | +                    schema_without_defs = { | 
|  | 136 | +                        k: v for k, v in schema_content.items() if k != "definitions" | 
|  | 137 | +                    } | 
|  | 138 | +                    consolidated_definitions[schema_name] = fix_refs( | 
|  | 139 | +                        schema_without_defs, in_definition=True | 
|  | 140 | +                    ) | 
| 132 | 141 |                 else: | 
| 133 |  | -                    consolidated_definitions[schema_name] = fix_refs(schema_content, in_definition=True) | 
|  | 142 | +                    consolidated_definitions[schema_name] = fix_refs( | 
|  | 143 | +                        schema_content, in_definition=True | 
|  | 144 | +                    ) | 
| 134 | 145 | 
 | 
| 135 | 146 |         consolidated["definitions"] = consolidated_definitions | 
| 136 | 147 |         consolidated = fix_refs(consolidated, in_definition=False) | 
| @@ -181,7 +192,7 @@ def generate_models_from_json_schema(json_schema_path: Path, output_file_path: P | 
| 181 | 192 |     print(f"Generated models: {output_file_path}", file=sys.stderr) | 
| 182 | 193 | 
 | 
| 183 | 194 | 
 | 
| 184 |  | -def main(): | 
|  | 195 | +def main() -> None: | 
| 185 | 196 |     print("Generating connector metadata models...", file=sys.stderr) | 
| 186 | 197 | 
 | 
| 187 | 198 |     with tempfile.TemporaryDirectory() as temp_dir: | 
|  | 
0 commit comments