|
2 | 2 |
|
3 | 3 | from __future__ import annotations as _annotations |
4 | 4 |
|
| 5 | +import sys |
5 | 6 | from collections import deque |
6 | 7 | from collections.abc import Mapping, Sequence |
7 | 8 | from dataclasses import is_dataclass |
8 | 9 | from enum import Enum |
9 | 10 | from typing import Any, Optional, cast |
10 | 11 |
|
| 12 | +import typing_extensions |
11 | 13 | from pydantic import BaseModel, Json, RootModel, Secret |
12 | 14 | from pydantic._internal._utils import is_model_class |
13 | 15 | from pydantic.dataclasses import is_pydantic_dataclass |
14 | | -from typing_extensions import get_args, get_origin |
15 | 16 | from typing_inspection import typing_objects |
16 | 17 |
|
17 | 18 | from ..exceptions import SettingsError |
18 | 19 | from ..utils import _lenient_issubclass |
19 | 20 | from .types import EnvNoneType |
20 | 21 |
|
| 22 | +if sys.version_info >= (3, 12): |
| 23 | + from typing import TypeAliasType |
| 24 | + |
| 25 | + def get_origin(annotation: Any | None) -> Any | None: |
| 26 | + if isinstance(annotation, TypeAliasType): |
| 27 | + annotation = annotation.__value__ |
| 28 | + |
| 29 | + return typing_extensions.get_origin(annotation) |
| 30 | + |
| 31 | + def get_args(annotation: Any | None) -> Any: |
| 32 | + if isinstance(annotation, TypeAliasType): |
| 33 | + annotation = annotation.__value__ |
| 34 | + |
| 35 | + return typing_extensions.get_args(annotation) |
| 36 | + |
| 37 | +else: |
| 38 | + get_origin = typing_extensions.get_origin |
| 39 | + get_args = typing_extensions.get_args |
| 40 | + |
21 | 41 |
|
22 | 42 | def _get_env_var_key(key: str, case_sensitive: bool = False) -> str: |
23 | 43 | return key if case_sensitive else key.lower() |
|
0 commit comments