GRAYBYTE WORDPRESS FILE MANAGER9117

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/hc_python/lib/python3.12/site-packages/pydantic/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/hc_python/lib/python3.12/site-packages/pydantic//aliases.py
"""Support for alias configurations."""

from __future__ import annotations

import dataclasses
from typing import Any, Callable, Literal

from pydantic_core import PydanticUndefined

from ._internal import _internal_dataclass

__all__ = ('AliasGenerator', 'AliasPath', 'AliasChoices')


@dataclasses.dataclass(**_internal_dataclass.slots_true)
class AliasPath:
    """Usage docs: https://docs.pydantic.dev/2.8/concepts/alias#aliaspath-and-aliaschoices

    A data class used by `validation_alias` as a convenience to create aliases.

    Attributes:
        path: A list of string or integer aliases.
    """

    path: list[int | str]

    def __init__(self, first_arg: str, *args: str | int) -> None:
        self.path = [first_arg] + list(args)

    def convert_to_aliases(self) -> list[str | int]:
        """Converts arguments to a list of string or integer aliases.

        Returns:
            The list of aliases.
        """
        return self.path

    def search_dict_for_path(self, d: dict) -> Any:
        """Searches a dictionary for the path specified by the alias.

        Returns:
            The value at the specified path, or `PydanticUndefined` if the path is not found.
        """
        v = d
        for k in self.path:
            if isinstance(v, str):
                # disallow indexing into a str, like for AliasPath('x', 0) and x='abc'
                return PydanticUndefined
            try:
                v = v[k]
            except (KeyError, IndexError, TypeError):
                return PydanticUndefined
        return v


@dataclasses.dataclass(**_internal_dataclass.slots_true)
class AliasChoices:
    """Usage docs: https://docs.pydantic.dev/2.8/concepts/alias#aliaspath-and-aliaschoices

    A data class used by `validation_alias` as a convenience to create aliases.

    Attributes:
        choices: A list containing a string or `AliasPath`.
    """

    choices: list[str | AliasPath]

    def __init__(self, first_choice: str | AliasPath, *choices: str | AliasPath) -> None:
        self.choices = [first_choice] + list(choices)

    def convert_to_aliases(self) -> list[list[str | int]]:
        """Converts arguments to a list of lists containing string or integer aliases.

        Returns:
            The list of aliases.
        """
        aliases: list[list[str | int]] = []
        for c in self.choices:
            if isinstance(c, AliasPath):
                aliases.append(c.convert_to_aliases())
            else:
                aliases.append([c])
        return aliases


@dataclasses.dataclass(**_internal_dataclass.slots_true)
class AliasGenerator:
    """Usage docs: https://docs.pydantic.dev/2.8/concepts/alias#using-an-aliasgenerator

    A data class used by `alias_generator` as a convenience to create various aliases.

    Attributes:
        alias: A callable that takes a field name and returns an alias for it.
        validation_alias: A callable that takes a field name and returns a validation alias for it.
        serialization_alias: A callable that takes a field name and returns a serialization alias for it.
    """

    alias: Callable[[str], str] | None = None
    validation_alias: Callable[[str], str | AliasPath | AliasChoices] | None = None
    serialization_alias: Callable[[str], str] | None = None

    def _generate_alias(
        self,
        alias_kind: Literal['alias', 'validation_alias', 'serialization_alias'],
        allowed_types: tuple[type[str] | type[AliasPath] | type[AliasChoices], ...],
        field_name: str,
    ) -> str | AliasPath | AliasChoices | None:
        """Generate an alias of the specified kind. Returns None if the alias generator is None.

        Raises:
            TypeError: If the alias generator produces an invalid type.
        """
        alias = None
        if alias_generator := getattr(self, alias_kind):
            alias = alias_generator(field_name)
            if alias and not isinstance(alias, allowed_types):
                raise TypeError(
                    f'Invalid `{alias_kind}` type. `{alias_kind}` generator must produce one of `{allowed_types}`'
                )
        return alias

    def generate_aliases(self, field_name: str) -> tuple[str | None, str | AliasPath | AliasChoices | None, str | None]:
        """Generate `alias`, `validation_alias`, and `serialization_alias` for a field.

        Returns:
            A tuple of three aliases - validation, alias, and serialization.
        """
        alias = self._generate_alias('alias', (str,), field_name)
        validation_alias = self._generate_alias('validation_alias', (str, AliasChoices, AliasPath), field_name)
        serialization_alias = self._generate_alias('serialization_alias', (str,), field_name)

        return alias, validation_alias, serialization_alias  # type: ignore

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 08:31:29
root / root
0755
__pycache__
--
April 04 2025 08:00:28
root / root
0755
_internal
--
April 04 2025 08:00:28
root / root
0755
deprecated
--
April 04 2025 08:00:28
root / root
0755
experimental
--
April 04 2025 08:00:28
root / root
0755
plugin
--
April 04 2025 08:00:28
root / root
0755
v1
--
April 04 2025 08:00:28
root / root
0755
__init__.py
13.604 KB
April 04 2025 08:00:28
root / root
0644
_migration.py
11.634 KB
April 04 2025 08:00:28
root / root
0644
alias_generators.py
2.074 KB
April 04 2025 08:00:28
root / root
0644
aliases.py
4.706 KB
April 04 2025 08:00:28
root / root
0644
annotated_handlers.py
4.251 KB
April 04 2025 08:00:28
root / root
0644
class_validators.py
0.145 KB
April 04 2025 08:00:28
root / root
0644
color.py
20.99 KB
April 04 2025 08:00:28
root / root
0644
config.py
34.289 KB
April 04 2025 08:00:28
root / root
0644
dataclasses.py
13.583 KB
April 04 2025 08:00:28
root / root
0644
datetime_parse.py
0.146 KB
April 04 2025 08:00:28
root / root
0644
decorator.py
0.142 KB
April 04 2025 08:00:28
root / root
0644
env_settings.py
0.145 KB
April 04 2025 08:00:28
root / root
0644
error_wrappers.py
0.146 KB
April 04 2025 08:00:28
root / root
0644
errors.py
4.722 KB
April 04 2025 08:00:28
root / root
0644
fields.py
50.533 KB
April 04 2025 08:00:28
root / root
0644
functional_serializers.py
14.273 KB
April 04 2025 08:00:28
root / root
0644
functional_validators.py
23.656 KB
April 04 2025 08:00:28
root / root
0644
generics.py
0.141 KB
April 04 2025 08:00:28
root / root
0644
json.py
0.137 KB
April 04 2025 08:00:28
root / root
0644
json_schema.py
103.806 KB
April 04 2025 08:00:28
root / root
0644
main.py
68.463 KB
April 04 2025 08:00:28
root / root
0644
mypy.py
55.637 KB
April 04 2025 08:00:28
root / root
0644
networks.py
22.181 KB
April 04 2025 08:00:28
root / root
0644
parse.py
0.138 KB
April 04 2025 08:00:28
root / root
0644
py.typed
0 KB
April 04 2025 08:00:28
root / root
0644
root_model.py
6.049 KB
April 04 2025 08:00:28
root / root
0644
schema.py
0.139 KB
April 04 2025 08:00:28
root / root
0644
tools.py
0.138 KB
April 04 2025 08:00:28
root / root
0644
type_adapter.py
24.389 KB
April 04 2025 08:00:28
root / root
0644
types.py
93.5 KB
April 04 2025 08:00:28
root / root
0644
typing.py
0.135 KB
April 04 2025 08:00:28
root / root
0644
utils.py
0.138 KB
April 04 2025 08:00:28
root / root
0644
validate_call_decorator.py
2.077 KB
April 04 2025 08:00:28
root / root
0644
validators.py
0.143 KB
April 04 2025 08:00:28
root / root
0644
version.py
2.385 KB
April 04 2025 08:00:28
root / root
0644
warnings.py
2.647 KB
April 04 2025 08:00:28
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF