# 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 .availability_times import AvailabilityTimes
    from .aws_qasm_3_job_input import AwsQasm3JobInput
    from .aws_qasm_3_job_input_params import AwsQasm3JobInputParams
    from .azure_ionq_job_input import AzureIonqJobInput
    from .azure_ionq_job_input_circuit_item import AzureIonqJobInputCircuitItem
    from .azure_ionq_job_input_circuit_item_type import AzureIonqJobInputCircuitItemType
    from .azure_ionq_job_input_params import AzureIonqJobInputParams
    from .backend import Backend
    from .backend_access_type import BackendAccessType
    from .backend_hardware_provider import BackendHardwareProvider
    from .backend_provider import BackendProvider
    from .backend_state_info import BackendStateInfo
    from .backend_state_info_status import BackendStateInfoStatus
    from .backend_status import BackendStatus
    from .backend_technology import BackendTechnology
    from .backend_type import BackendType
    from .calibration_response import CalibrationResponse
    from .configuration import Configuration
    from .configuration_output_format import ConfigurationOutputFormat
    from .configuration_supported_input_formats_item import ConfigurationSupportedInputFormatsItem
    from .connectivity import Connectivity
    from .cost import Cost
    from .cost_granularity import CostGranularity
    from .documentation import Documentation
    from .documentation_sdks_item import DocumentationSdksItem
    from .gate import Gate
    from .job import Job
    from .job_input_format import JobInputFormat
    from .job_provider import JobProvider
    from .job_sdk_provider import JobSdkProvider
    from .job_status import JobStatus
    from .job_status_response import JobStatusResponse
    from .job_status_response_status import JobStatusResponseStatus
    from .json_node import JsonNode
    from .oauth_scope import OauthScope
    from .page_response_job import PageResponseJob
    from .photonic_properties import PhotonicProperties
    from .qubit import Qubit
    from .service_execution_id import ServiceExecutionId
    from .shots_range import ShotsRange
_dynamic_imports: typing.Dict[str, str] = {
    "AvailabilityTimes": ".availability_times",
    "AwsQasm3JobInput": ".aws_qasm_3_job_input",
    "AwsQasm3JobInputParams": ".aws_qasm_3_job_input_params",
    "AzureIonqJobInput": ".azure_ionq_job_input",
    "AzureIonqJobInputCircuitItem": ".azure_ionq_job_input_circuit_item",
    "AzureIonqJobInputCircuitItemType": ".azure_ionq_job_input_circuit_item_type",
    "AzureIonqJobInputParams": ".azure_ionq_job_input_params",
    "Backend": ".backend",
    "BackendAccessType": ".backend_access_type",
    "BackendHardwareProvider": ".backend_hardware_provider",
    "BackendProvider": ".backend_provider",
    "BackendStateInfo": ".backend_state_info",
    "BackendStateInfoStatus": ".backend_state_info_status",
    "BackendStatus": ".backend_status",
    "BackendTechnology": ".backend_technology",
    "BackendType": ".backend_type",
    "CalibrationResponse": ".calibration_response",
    "Configuration": ".configuration",
    "ConfigurationOutputFormat": ".configuration_output_format",
    "ConfigurationSupportedInputFormatsItem": ".configuration_supported_input_formats_item",
    "Connectivity": ".connectivity",
    "Cost": ".cost",
    "CostGranularity": ".cost_granularity",
    "Documentation": ".documentation",
    "DocumentationSdksItem": ".documentation_sdks_item",
    "Gate": ".gate",
    "Job": ".job",
    "JobInputFormat": ".job_input_format",
    "JobProvider": ".job_provider",
    "JobSdkProvider": ".job_sdk_provider",
    "JobStatus": ".job_status",
    "JobStatusResponse": ".job_status_response",
    "JobStatusResponseStatus": ".job_status_response_status",
    "JsonNode": ".json_node",
    "OauthScope": ".oauth_scope",
    "PageResponseJob": ".page_response_job",
    "PhotonicProperties": ".photonic_properties",
    "Qubit": ".qubit",
    "ServiceExecutionId": ".service_execution_id",
    "ShotsRange": ".shots_range",
}


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__ = [
    "AvailabilityTimes",
    "AwsQasm3JobInput",
    "AwsQasm3JobInputParams",
    "AzureIonqJobInput",
    "AzureIonqJobInputCircuitItem",
    "AzureIonqJobInputCircuitItemType",
    "AzureIonqJobInputParams",
    "Backend",
    "BackendAccessType",
    "BackendHardwareProvider",
    "BackendProvider",
    "BackendStateInfo",
    "BackendStateInfoStatus",
    "BackendStatus",
    "BackendTechnology",
    "BackendType",
    "CalibrationResponse",
    "Configuration",
    "ConfigurationOutputFormat",
    "ConfigurationSupportedInputFormatsItem",
    "Connectivity",
    "Cost",
    "CostGranularity",
    "Documentation",
    "DocumentationSdksItem",
    "Gate",
    "Job",
    "JobInputFormat",
    "JobProvider",
    "JobSdkProvider",
    "JobStatus",
    "JobStatusResponse",
    "JobStatusResponseStatus",
    "JsonNode",
    "OauthScope",
    "PageResponseJob",
    "PhotonicProperties",
    "Qubit",
    "ServiceExecutionId",
    "ShotsRange",
]
