# 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 .create_field_definition_params_data import (
        CreateFieldDefinitionParamsData,
        CreateFieldDefinitionParamsData_Date,
        CreateFieldDefinitionParamsData_LongText,
        CreateFieldDefinitionParamsData_Number,
        CreateFieldDefinitionParamsData_Rating,
        CreateFieldDefinitionParamsData_Select,
        CreateFieldDefinitionParamsData_SelectMulti,
        CreateFieldDefinitionParamsData_Text,
        CreateFieldDefinitionParamsData_Toggle,
        CreateFieldDefinitionParamsData_UserMulti,
        CreateFieldDefinitionParamsData_UserSingle,
    )
    from .update_field_definition_params_data import (
        UpdateFieldDefinitionParamsData,
        UpdateFieldDefinitionParamsData_Date,
        UpdateFieldDefinitionParamsData_LongText,
        UpdateFieldDefinitionParamsData_Number,
        UpdateFieldDefinitionParamsData_Rating,
        UpdateFieldDefinitionParamsData_Select,
        UpdateFieldDefinitionParamsData_SelectMulti,
        UpdateFieldDefinitionParamsData_Text,
        UpdateFieldDefinitionParamsData_Toggle,
        UpdateFieldDefinitionParamsData_UserMulti,
        UpdateFieldDefinitionParamsData_UserSingle,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "CreateFieldDefinitionParamsData": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_Date": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_LongText": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_Number": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_Rating": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_Select": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_SelectMulti": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_Text": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_Toggle": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_UserMulti": ".create_field_definition_params_data",
    "CreateFieldDefinitionParamsData_UserSingle": ".create_field_definition_params_data",
    "UpdateFieldDefinitionParamsData": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_Date": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_LongText": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_Number": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_Rating": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_Select": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_SelectMulti": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_Text": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_Toggle": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_UserMulti": ".update_field_definition_params_data",
    "UpdateFieldDefinitionParamsData_UserSingle": ".update_field_definition_params_data",
}


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__ = [
    "CreateFieldDefinitionParamsData",
    "CreateFieldDefinitionParamsData_Date",
    "CreateFieldDefinitionParamsData_LongText",
    "CreateFieldDefinitionParamsData_Number",
    "CreateFieldDefinitionParamsData_Rating",
    "CreateFieldDefinitionParamsData_Select",
    "CreateFieldDefinitionParamsData_SelectMulti",
    "CreateFieldDefinitionParamsData_Text",
    "CreateFieldDefinitionParamsData_Toggle",
    "CreateFieldDefinitionParamsData_UserMulti",
    "CreateFieldDefinitionParamsData_UserSingle",
    "UpdateFieldDefinitionParamsData",
    "UpdateFieldDefinitionParamsData_Date",
    "UpdateFieldDefinitionParamsData_LongText",
    "UpdateFieldDefinitionParamsData_Number",
    "UpdateFieldDefinitionParamsData_Rating",
    "UpdateFieldDefinitionParamsData_Select",
    "UpdateFieldDefinitionParamsData_SelectMulti",
    "UpdateFieldDefinitionParamsData_Text",
    "UpdateFieldDefinitionParamsData_Toggle",
    "UpdateFieldDefinitionParamsData_UserMulti",
    "UpdateFieldDefinitionParamsData_UserSingle",
]
