# 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 .types import (
        DeleteInvoicesIdApproversResponse,
        GetInvoicesIdApproversResponse,
        GetInvoicesRootRequestPaymentStatus,
        GetInvoicesRootRequestStatus,
        GetInvoicesRootResponse,
        GetInvoicesUploadsResponse,
        PatchInvoicesIdRequestItemsItem,
        PatchInvoicesIdRequestType,
        PostInvoicesIdApproveResponse,
        PostInvoicesIdApproveResponseInvoice,
        PostInvoicesIdApproversResponse,
        PostInvoicesIdFlagResponse,
        PostInvoicesIdFlagResponseInvoice,
        PostInvoicesMarkExportedRequestInvoicesItem,
        PostInvoicesMarkUnexportedRequestInvoicesItem,
        PostInvoicesRootRequestItemsItem,
        PostInvoicesRootRequestType,
        PostInvoicesRootResponse,
        PostInvoicesRootResponseItems,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "DeleteInvoicesIdApproversResponse": ".types",
    "GetInvoicesIdApproversResponse": ".types",
    "GetInvoicesRootRequestPaymentStatus": ".types",
    "GetInvoicesRootRequestStatus": ".types",
    "GetInvoicesRootResponse": ".types",
    "GetInvoicesUploadsResponse": ".types",
    "PatchInvoicesIdRequestItemsItem": ".types",
    "PatchInvoicesIdRequestType": ".types",
    "PostInvoicesIdApproveResponse": ".types",
    "PostInvoicesIdApproveResponseInvoice": ".types",
    "PostInvoicesIdApproversResponse": ".types",
    "PostInvoicesIdFlagResponse": ".types",
    "PostInvoicesIdFlagResponseInvoice": ".types",
    "PostInvoicesMarkExportedRequestInvoicesItem": ".types",
    "PostInvoicesMarkUnexportedRequestInvoicesItem": ".types",
    "PostInvoicesRootRequestItemsItem": ".types",
    "PostInvoicesRootRequestType": ".types",
    "PostInvoicesRootResponse": ".types",
    "PostInvoicesRootResponseItems": ".types",
}


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__ = [
    "DeleteInvoicesIdApproversResponse",
    "GetInvoicesIdApproversResponse",
    "GetInvoicesRootRequestPaymentStatus",
    "GetInvoicesRootRequestStatus",
    "GetInvoicesRootResponse",
    "GetInvoicesUploadsResponse",
    "PatchInvoicesIdRequestItemsItem",
    "PatchInvoicesIdRequestType",
    "PostInvoicesIdApproveResponse",
    "PostInvoicesIdApproveResponseInvoice",
    "PostInvoicesIdApproversResponse",
    "PostInvoicesIdFlagResponse",
    "PostInvoicesIdFlagResponseInvoice",
    "PostInvoicesMarkExportedRequestInvoicesItem",
    "PostInvoicesMarkUnexportedRequestInvoicesItem",
    "PostInvoicesRootRequestItemsItem",
    "PostInvoicesRootRequestType",
    "PostInvoicesRootResponse",
    "PostInvoicesRootResponseItems",
]
