# 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 (
        BaseEvent,
        CreateEventBody,
        CreateEventEvent,
        CreateGenerationBody,
        CreateGenerationEvent,
        CreateObservationEvent,
        CreateSpanBody,
        CreateSpanEvent,
        IngestionError,
        IngestionEvent,
        IngestionEvent_EventCreate,
        IngestionEvent_GenerationCreate,
        IngestionEvent_GenerationUpdate,
        IngestionEvent_ObservationCreate,
        IngestionEvent_ObservationUpdate,
        IngestionEvent_ScoreCreate,
        IngestionEvent_SdkLog,
        IngestionEvent_SpanCreate,
        IngestionEvent_SpanUpdate,
        IngestionEvent_TraceCreate,
        IngestionResponse,
        IngestionSuccess,
        IngestionUsage,
        ObservationBody,
        ObservationType,
        OpenAiCompletionUsageSchema,
        OpenAiResponseUsageSchema,
        OpenAiUsage,
        OptionalObservationBody,
        ScoreBody,
        ScoreEvent,
        SdkLogBody,
        SdkLogEvent,
        TraceBody,
        TraceEvent,
        UpdateEventBody,
        UpdateGenerationBody,
        UpdateGenerationEvent,
        UpdateObservationEvent,
        UpdateSpanBody,
        UpdateSpanEvent,
        UsageDetails,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "BaseEvent": ".types",
    "CreateEventBody": ".types",
    "CreateEventEvent": ".types",
    "CreateGenerationBody": ".types",
    "CreateGenerationEvent": ".types",
    "CreateObservationEvent": ".types",
    "CreateSpanBody": ".types",
    "CreateSpanEvent": ".types",
    "IngestionError": ".types",
    "IngestionEvent": ".types",
    "IngestionEvent_EventCreate": ".types",
    "IngestionEvent_GenerationCreate": ".types",
    "IngestionEvent_GenerationUpdate": ".types",
    "IngestionEvent_ObservationCreate": ".types",
    "IngestionEvent_ObservationUpdate": ".types",
    "IngestionEvent_ScoreCreate": ".types",
    "IngestionEvent_SdkLog": ".types",
    "IngestionEvent_SpanCreate": ".types",
    "IngestionEvent_SpanUpdate": ".types",
    "IngestionEvent_TraceCreate": ".types",
    "IngestionResponse": ".types",
    "IngestionSuccess": ".types",
    "IngestionUsage": ".types",
    "ObservationBody": ".types",
    "ObservationType": ".types",
    "OpenAiCompletionUsageSchema": ".types",
    "OpenAiResponseUsageSchema": ".types",
    "OpenAiUsage": ".types",
    "OptionalObservationBody": ".types",
    "ScoreBody": ".types",
    "ScoreEvent": ".types",
    "SdkLogBody": ".types",
    "SdkLogEvent": ".types",
    "TraceBody": ".types",
    "TraceEvent": ".types",
    "UpdateEventBody": ".types",
    "UpdateGenerationBody": ".types",
    "UpdateGenerationEvent": ".types",
    "UpdateObservationEvent": ".types",
    "UpdateSpanBody": ".types",
    "UpdateSpanEvent": ".types",
    "UsageDetails": ".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__ = [
    "BaseEvent",
    "CreateEventBody",
    "CreateEventEvent",
    "CreateGenerationBody",
    "CreateGenerationEvent",
    "CreateObservationEvent",
    "CreateSpanBody",
    "CreateSpanEvent",
    "IngestionError",
    "IngestionEvent",
    "IngestionEvent_EventCreate",
    "IngestionEvent_GenerationCreate",
    "IngestionEvent_GenerationUpdate",
    "IngestionEvent_ObservationCreate",
    "IngestionEvent_ObservationUpdate",
    "IngestionEvent_ScoreCreate",
    "IngestionEvent_SdkLog",
    "IngestionEvent_SpanCreate",
    "IngestionEvent_SpanUpdate",
    "IngestionEvent_TraceCreate",
    "IngestionResponse",
    "IngestionSuccess",
    "IngestionUsage",
    "ObservationBody",
    "ObservationType",
    "OpenAiCompletionUsageSchema",
    "OpenAiResponseUsageSchema",
    "OpenAiUsage",
    "OptionalObservationBody",
    "ScoreBody",
    "ScoreEvent",
    "SdkLogBody",
    "SdkLogEvent",
    "TraceBody",
    "TraceEvent",
    "UpdateEventBody",
    "UpdateGenerationBody",
    "UpdateGenerationEvent",
    "UpdateObservationEvent",
    "UpdateSpanBody",
    "UpdateSpanEvent",
    "UsageDetails",
]
