in src/databao_context_engine/introspection/property_extract.py [0:0]
def _get_property_list_from_pydantic_base_model(parent_type: type):
if not issubclass(parent_type, BaseModel):
raise ValueError(f"{parent_type} is not a Pydantic BaseModel")
pydantic_fields = parent_type.model_fields
result = []
for field_name, field_info in pydantic_fields.items():
has_field_default = type(field_info.default) is not PydanticUndefinedType
if field_info.annotation is None:
# No type: ignore the field
continue
property_for_field = _create_property(
property_type=field_info.annotation,
property_name=field_name,
property_default=field_info.default if has_field_default else None,
is_property_required=not has_field_default,
annotation=next(
(metadata for metadata in field_info.metadata if isinstance(metadata, ConfigPropertyAnnotation)), None
),
)
if property_for_field is not None:
result.append(property_for_field)
return result