Bases: JsonSchemaConverterBase[TStoredSchema]
Read a dereferenced JSON Schema and emit dlt tables.
Config:
frozen: True
arbitrary_types_allowed: True
Fields:
-
extension_registry
(InstanceOf[ExtensionRegistry])
-
schema_name
(str)
-
skip_nested_types
(bool)
-
max_nesting
(PositiveInt)
-
write_disposition
(str | None)
-
flatten_scalars
(bool)
Validators:
-
_validate_schema_name
→
schema_name
Source code in src/cdm_data_loaders/converters/facades/jsonschema_to_dlt.py
| class JSONSchemaToDlt(JsonSchemaConverterBase[TStoredSchema]):
"""Read a dereferenced JSON Schema and emit dlt tables."""
_error_cls: ClassVar[type[ConversionError]] = JSONSchemaToDltError
_invalid_schema_error_cls: ClassVar[type[ConversionError]] = InvalidJSONSchemaError
_converter_name: ClassVar[str] = "JSONSchemaToDlt"
_root_target_label: ClassVar[str] = "a dlt table"
_dereference_function: ClassVar[str] = "jsonschema_to_dlt.dereferencing.dereference_schema"
schema_name: str
skip_nested_types: bool = False
max_nesting: PositiveInt = Field(default=10)
write_disposition: str | None = None
flatten_scalars: bool = True
@field_validator("schema_name")
@classmethod
def _validate_schema_name(cls, value: str) -> str:
"""Reject empty schema names."""
return validate_non_empty_schema_name(value)
def _emitter(self) -> DltEmitter:
"""Pass target policy to the emitter."""
return DltEmitter(**self.model_dump(exclude={"extension_registry"}))
def to_yaml(self, schema: dict[str, Any]) -> str:
"""Emit a dlt stored schema as YAML."""
return self._emitter().to_yaml(self._read(schema))
def to_schema(self, schema: dict[str, Any]) -> "Schema":
"""Emit a live dlt Schema with parent tables installed first."""
return self._emitter().to_schema(self._read(schema))
|
to_yaml
to_yaml(schema: dict[str, Any]) -> str
Emit a dlt stored schema as YAML.
Source code in src/cdm_data_loaders/converters/facades/jsonschema_to_dlt.py
| def to_yaml(self, schema: dict[str, Any]) -> str:
"""Emit a dlt stored schema as YAML."""
return self._emitter().to_yaml(self._read(schema))
|
to_schema
to_schema(schema: dict[str, Any]) -> Schema
Emit a live dlt Schema with parent tables installed first.
Source code in src/cdm_data_loaders/converters/facades/jsonschema_to_dlt.py
| def to_schema(self, schema: dict[str, Any]) -> "Schema":
"""Emit a live dlt Schema with parent tables installed first."""
return self._emitter().to_schema(self._read(schema))
|