# This file was auto-generated by Fern from our API Definition.

# isort: skip_file

import typing
from importlib import import_module

if typing.TYPE_CHECKING:
    from .building_object_field import BuildingObjectField
    from .building_object_type import BuildingObjectType
    from .building_objects_input import BuildingObjectsInput
    from .component_update import ComponentUpdate
    from .field_comparison import FieldComparison
    from .file_data import FileData
    from .flat_building_object import FlatBuildingObject
    from .gantt_item import GanttItem
    from .health_status import HealthStatus
    from .measurement_update_input import MeasurementUpdateInput
    from .milestone import Milestone
    from .product import Product
    from .product_config import ProductConfig
    from .product_id import ProductId
    from .project_ref import ProjectRef
    from .project_user import ProjectUser
    from .quality_annotation import QualityAnnotation
    from .quality_status import QualityStatus
    from .summary_task import SummaryTask
    from .task import Task
    from .task_proposal import TaskProposal
    from .upload_response import UploadResponse
    from .user_role import UserRole
    from .vector_update_response import VectorUpdateResponse
_dynamic_imports: typing.Dict[str, str] = {
    "BuildingObjectField": ".building_object_field",
    "BuildingObjectType": ".building_object_type",
    "BuildingObjectsInput": ".building_objects_input",
    "ComponentUpdate": ".component_update",
    "FieldComparison": ".field_comparison",
    "FileData": ".file_data",
    "FlatBuildingObject": ".flat_building_object",
    "GanttItem": ".gantt_item",
    "HealthStatus": ".health_status",
    "MeasurementUpdateInput": ".measurement_update_input",
    "Milestone": ".milestone",
    "Product": ".product",
    "ProductConfig": ".product_config",
    "ProductId": ".product_id",
    "ProjectRef": ".project_ref",
    "ProjectUser": ".project_user",
    "QualityAnnotation": ".quality_annotation",
    "QualityStatus": ".quality_status",
    "SummaryTask": ".summary_task",
    "Task": ".task",
    "TaskProposal": ".task_proposal",
    "UploadResponse": ".upload_response",
    "UserRole": ".user_role",
    "VectorUpdateResponse": ".vector_update_response",
}


def __getattr__(attr_name: str) -> typing.Any:
    module_name = _dynamic_imports.get(attr_name)
    if module_name is None:
        raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
    try:
        module = import_module(module_name, __package__)
        if module_name == f".{attr_name}":
            return module
        else:
            return getattr(module, attr_name)
    except ImportError as e:
        raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
    except AttributeError as e:
        raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e


def __dir__():
    lazy_attrs = list(_dynamic_imports.keys())
    return sorted(lazy_attrs)


__all__ = [
    "BuildingObjectField",
    "BuildingObjectType",
    "BuildingObjectsInput",
    "ComponentUpdate",
    "FieldComparison",
    "FileData",
    "FlatBuildingObject",
    "GanttItem",
    "HealthStatus",
    "MeasurementUpdateInput",
    "Milestone",
    "Product",
    "ProductConfig",
    "ProductId",
    "ProjectRef",
    "ProjectUser",
    "QualityAnnotation",
    "QualityStatus",
    "SummaryTask",
    "Task",
    "TaskProposal",
    "UploadResponse",
    "UserRole",
    "VectorUpdateResponse",
]
