# 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 (
        ArrayOptionsEvaluationRuleFilter,
        BooleanEvaluationRuleFilter,
        CategoryOptionsEvaluationRuleFilter,
        CodeEvaluatorSourceCodeLanguage,
        DateTimeEvaluationRuleFilter,
        EvaluationRuleArrayOptionsFilterOperator,
        EvaluationRuleBooleanFilterOperator,
        EvaluationRuleFilter,
        EvaluationRuleFilter_ArrayOptions,
        EvaluationRuleFilter_Boolean,
        EvaluationRuleFilter_CategoryOptions,
        EvaluationRuleFilter_Datetime,
        EvaluationRuleFilter_Null,
        EvaluationRuleFilter_Number,
        EvaluationRuleFilter_NumberObject,
        EvaluationRuleFilter_String,
        EvaluationRuleFilter_StringObject,
        EvaluationRuleFilter_StringOptions,
        EvaluationRuleMapping,
        EvaluationRuleMappingSource,
        EvaluationRuleNullFilterOperator,
        EvaluationRuleNumberFilterOperator,
        EvaluationRuleOptionsFilterOperator,
        EvaluationRuleStatus,
        EvaluationRuleStringFilterOperator,
        EvaluationRuleTarget,
        EvaluatorModelConfig,
        EvaluatorOutputDataType,
        EvaluatorOutputDefinition,
        EvaluatorOutputDefinition_Boolean,
        EvaluatorOutputDefinition_Categorical,
        EvaluatorOutputDefinition_Numeric,
        EvaluatorOutputFieldDefinition,
        EvaluatorScope,
        EvaluatorType,
        NullEvaluationRuleFilter,
        NumberEvaluationRuleFilter,
        NumberObjectEvaluationRuleFilter,
        PublicBooleanEvaluatorOutputDefinition,
        PublicCategoricalEvaluatorOutputDefinition,
        PublicCategoricalEvaluatorOutputScoreDefinition,
        PublicEvaluatorOutputDefinition,
        PublicEvaluatorOutputDefinition_Boolean,
        PublicEvaluatorOutputDefinition_Categorical,
        PublicEvaluatorOutputDefinition_Numeric,
        PublicNumericEvaluatorOutputDefinition,
        StringEvaluationRuleFilter,
        StringObjectEvaluationRuleFilter,
        StringOptionsEvaluationRuleFilter,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "ArrayOptionsEvaluationRuleFilter": ".types",
    "BooleanEvaluationRuleFilter": ".types",
    "CategoryOptionsEvaluationRuleFilter": ".types",
    "CodeEvaluatorSourceCodeLanguage": ".types",
    "DateTimeEvaluationRuleFilter": ".types",
    "EvaluationRuleArrayOptionsFilterOperator": ".types",
    "EvaluationRuleBooleanFilterOperator": ".types",
    "EvaluationRuleFilter": ".types",
    "EvaluationRuleFilter_ArrayOptions": ".types",
    "EvaluationRuleFilter_Boolean": ".types",
    "EvaluationRuleFilter_CategoryOptions": ".types",
    "EvaluationRuleFilter_Datetime": ".types",
    "EvaluationRuleFilter_Null": ".types",
    "EvaluationRuleFilter_Number": ".types",
    "EvaluationRuleFilter_NumberObject": ".types",
    "EvaluationRuleFilter_String": ".types",
    "EvaluationRuleFilter_StringObject": ".types",
    "EvaluationRuleFilter_StringOptions": ".types",
    "EvaluationRuleMapping": ".types",
    "EvaluationRuleMappingSource": ".types",
    "EvaluationRuleNullFilterOperator": ".types",
    "EvaluationRuleNumberFilterOperator": ".types",
    "EvaluationRuleOptionsFilterOperator": ".types",
    "EvaluationRuleStatus": ".types",
    "EvaluationRuleStringFilterOperator": ".types",
    "EvaluationRuleTarget": ".types",
    "EvaluatorModelConfig": ".types",
    "EvaluatorOutputDataType": ".types",
    "EvaluatorOutputDefinition": ".types",
    "EvaluatorOutputDefinition_Boolean": ".types",
    "EvaluatorOutputDefinition_Categorical": ".types",
    "EvaluatorOutputDefinition_Numeric": ".types",
    "EvaluatorOutputFieldDefinition": ".types",
    "EvaluatorScope": ".types",
    "EvaluatorType": ".types",
    "NullEvaluationRuleFilter": ".types",
    "NumberEvaluationRuleFilter": ".types",
    "NumberObjectEvaluationRuleFilter": ".types",
    "PublicBooleanEvaluatorOutputDefinition": ".types",
    "PublicCategoricalEvaluatorOutputDefinition": ".types",
    "PublicCategoricalEvaluatorOutputScoreDefinition": ".types",
    "PublicEvaluatorOutputDefinition": ".types",
    "PublicEvaluatorOutputDefinition_Boolean": ".types",
    "PublicEvaluatorOutputDefinition_Categorical": ".types",
    "PublicEvaluatorOutputDefinition_Numeric": ".types",
    "PublicNumericEvaluatorOutputDefinition": ".types",
    "StringEvaluationRuleFilter": ".types",
    "StringObjectEvaluationRuleFilter": ".types",
    "StringOptionsEvaluationRuleFilter": ".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__ = [
    "ArrayOptionsEvaluationRuleFilter",
    "BooleanEvaluationRuleFilter",
    "CategoryOptionsEvaluationRuleFilter",
    "CodeEvaluatorSourceCodeLanguage",
    "DateTimeEvaluationRuleFilter",
    "EvaluationRuleArrayOptionsFilterOperator",
    "EvaluationRuleBooleanFilterOperator",
    "EvaluationRuleFilter",
    "EvaluationRuleFilter_ArrayOptions",
    "EvaluationRuleFilter_Boolean",
    "EvaluationRuleFilter_CategoryOptions",
    "EvaluationRuleFilter_Datetime",
    "EvaluationRuleFilter_Null",
    "EvaluationRuleFilter_Number",
    "EvaluationRuleFilter_NumberObject",
    "EvaluationRuleFilter_String",
    "EvaluationRuleFilter_StringObject",
    "EvaluationRuleFilter_StringOptions",
    "EvaluationRuleMapping",
    "EvaluationRuleMappingSource",
    "EvaluationRuleNullFilterOperator",
    "EvaluationRuleNumberFilterOperator",
    "EvaluationRuleOptionsFilterOperator",
    "EvaluationRuleStatus",
    "EvaluationRuleStringFilterOperator",
    "EvaluationRuleTarget",
    "EvaluatorModelConfig",
    "EvaluatorOutputDataType",
    "EvaluatorOutputDefinition",
    "EvaluatorOutputDefinition_Boolean",
    "EvaluatorOutputDefinition_Categorical",
    "EvaluatorOutputDefinition_Numeric",
    "EvaluatorOutputFieldDefinition",
    "EvaluatorScope",
    "EvaluatorType",
    "NullEvaluationRuleFilter",
    "NumberEvaluationRuleFilter",
    "NumberObjectEvaluationRuleFilter",
    "PublicBooleanEvaluatorOutputDefinition",
    "PublicCategoricalEvaluatorOutputDefinition",
    "PublicCategoricalEvaluatorOutputScoreDefinition",
    "PublicEvaluatorOutputDefinition",
    "PublicEvaluatorOutputDefinition_Boolean",
    "PublicEvaluatorOutputDefinition_Categorical",
    "PublicEvaluatorOutputDefinition_Numeric",
    "PublicNumericEvaluatorOutputDefinition",
    "StringEvaluationRuleFilter",
    "StringObjectEvaluationRuleFilter",
    "StringOptionsEvaluationRuleFilter",
]
