
    Ng                    ,   d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
mZ dZ ej        di ej         G d	 d
                      Z ej        di ej         G d d                      Z ej        di ej         G d d                      ZdS )z!Support for alias configurations.    )annotationsN)AnyCallableLiteral)PydanticUndefined   )_internal_dataclass)AliasGenerator	AliasPathAliasChoicesc                  6    e Zd ZU dZded<   dd
ZddZddZdS )r   zUsage docs: https://docs.pydantic.dev/2.9/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.
    zlist[int | str]path	first_argstrargs	str | intreturnNonec                6    |gt          |          z   | _        d S N)listr   )selfr   r   s      L/var/www/html/ai-engine/env/lib/python3.11/site-packages/pydantic/aliases.py__init__zAliasPath.__init__   s    K$t**,			    list[str | int]c                    | j         S )zvConverts arguments to a list of string or integer aliases.

        Returns:
            The list of aliases.
        )r   )r   s    r   convert_to_aliaseszAliasPath.convert_to_aliases   s     yr   ddictr   c                    |}| j         D ]O}t          |t                    r	t          c S 	 ||         }*# t          t
          t          f$ r t          cY c S w xY w|S )zSearches a dictionary for the path specified by the alias.

        Returns:
            The value at the specified path, or `PydanticUndefined` if the path is not found.
        )r   
isinstancer   r   KeyError
IndexError	TypeError)r   r   vks       r   search_dict_for_pathzAliasPath.search_dict_for_path&   s      	) 	)A!S!! )(((()aDj)4 ) ) )(((((()s   4AAN)r   r   r   r   r   r   )r   r   )r   r    r   r   )__name__
__module____qualname____doc____annotations__r   r   r(    r   r   r   r      sj           - - - -        r   r   c                  .    e Zd ZU dZded<   ddZdd
ZdS )r   zUsage docs: https://docs.pydantic.dev/2.9/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`.
    zlist[str | AliasPath]choicesfirst_choicestr | AliasPathr   r   c                6    |gt          |          z   | _        d S r   )r   r0   )r   r1   r0   s      r   r   zAliasChoices.__init__D   s    $~W5r   list[list[str | int]]c                    g }| j         D ]U}t          |t                    r(|                    |                                           ?|                    |g           V|S )zConverts arguments to a list of lists containing string or integer aliases.

        Returns:
            The list of aliases.
        )r0   r"   r   appendr   )r   aliasescs      r   r   zAliasChoices.convert_to_aliasesG   si     *, 	$ 	$A!Y'' $q33556666s####r   N)r1   r2   r0   r2   r   r   )r   r4   )r)   r*   r+   r,   r-   r   r   r.   r   r   r   r   8   sV           #"""6 6 6 6     r   r   c                  N    e Zd ZU dZdZded<   dZded<   dZded<   ddZddZ	dS )r
   a  Usage docs: https://docs.pydantic.dev/2.9/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.
    NzCallable[[str], str] | Nonealiasz6Callable[[str], str | AliasPath | AliasChoices] | Nonevalidation_aliasserialization_alias
alias_kind;Literal['alias', 'validation_alias', 'serialization_alias']allowed_types<tuple[type[str] | type[AliasPath] | type[AliasChoices], ...]
field_namer   r   %str | AliasPath | AliasChoices | Nonec           	         d}t          | |          x}r6 ||          }|r)t          ||          st          d| d| d| d          |S )zGenerate an alias of the specified kind. Returns None if the alias generator is None.

        Raises:
            TypeError: If the alias generator produces an invalid type.
        Nz	Invalid `z	` type. `z!` generator must produce one of ``)getattrr"   r%   )r   r=   r?   rA   r:   alias_generators         r   _generate_aliaszAliasGenerator._generate_aliasf   s     %dJ777? 	#OJ//E Z}== r
rrZrrborrr   r   Dtuple[str | None, str | AliasPath | AliasChoices | None, str | None]c                    |                      dt          f|          }|                      dt          t          t          f|          }|                      dt          f|          }|||fS )zGenerate `alias`, `validation_alias`, and `serialization_alias` for a field.

        Returns:
            A tuple of three aliases - validation, alias, and serialization.
        r:   r;   r<   )rG   r   r   r   )r   rA   r:   r;   r<   s        r   generate_aliaseszAliasGenerator.generate_aliasesz   sj     $$WsfjAA//0BS,XaDbdnoo"223H3&R\]]&(;;;r   )r=   r>   r?   r@   rA   r   r   rB   )rA   r   r   rH   )
r)   r*   r+   r,   r:   r-   r;   r<   rG   rJ   r.   r   r   r
   r
   V   s           *.E----OSSSSS7;;;;;   (
< 
< 
< 
< 
< 
<r   r
   r.   )r,   
__future__r   dataclassestypingr   r   r   pydantic_corer   	_internalr	   __all__	dataclass
slots_truer   r   r
   r.   r   r   <module>rS      s_   ' ' " " " " " "     ) ) ) ) ) ) ) ) ) ) + + + + + + * * * * * *
9 88,788% % % % % % % 98%P 88,788       98: 88,788-< -< -< -< -< -< -< 98-< -< -<r   