
    4g                    B   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y)z!Support for alias configurations.    )annotationsN)AnyCallableLiteral)PydanticUndefined   )_internal_dataclass)AliasGenerator	AliasPathAliasChoicesc                  4    e Zd ZU dZded<   ddZd	dZd
dZy)r   zUsage docs: https://docs.pydantic.dev/2.10/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]pathc                ,    |gt        |      z   | _        y N)listr   )self	first_argargss      f/var/www/python.lazyprojects.co.uk/rdoDiscordBot/venv/lib/python3.12/site-packages/pydantic/aliases.py__init__zAliasPath.__init__   s    K$t*,	    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     yyr   c                    |}| j                   D ]   }t        |t              rt        c S 	 ||   }" |S # t        t
        t        f$ r t        cY c S w xY w)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   
isinstancestrr   KeyError
IndexError	TypeError)r   dvks       r   search_dict_for_pathzAliasPath.search_dict_for_path&   sZ     A!S!(()aD   j)4 )(()s   4AAN)r   r   r   z	str | intreturnNone)r$   zlist[str | int])r    dictr$   r   )__name__
__module____qualname____doc____annotations__r   r   r#    r   r   r   r      s     -r   r   c                  ,    e Zd ZU dZded<   ddZddZy)	r   zUsage docs: https://docs.pydantic.dev/2.10/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]choicesc                ,    |gt        |      z   | _        y r   )r   r.   )r   first_choicer.   s      r   r   zAliasChoices.__init__D   s    $~W5r   c                    g }| j                   D ]D  }t        |t              r |j                  |j	                                3|j                  |g       F |S )zConverts arguments to a list of lists containing string or integer aliases.

        Returns:
            The list of aliases.
        )r.   r   r   appendr   )r   aliasescs      r   r   zAliasChoices.convert_to_aliasesG   sK     *,A!Y'q3356s#	 
 r   N)r0   str | AliasPathr.   r5   r$   r%   )r$   zlist[list[str | int]])r'   r(   r)   r*   r+   r   r   r,   r   r   r   r   8   s     #"6r   r   c                  \    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	y)r
   a  Usage docs: https://docs.pydantic.dev/2.10/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_aliasc           	     |    d}t        | |      x}r+ ||      }|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   
alias_kindallowed_types
field_namer7   alias_generators         r   _generate_aliaszAliasGenerator._generate_aliasf   sa     %dJ77?7#J/EZ}=
|9ZL@aboappqr  r   c                    | j                  dt        f|      }| j                  dt        t        t        f|      }| j                  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.
        r7   r8   r9   )rA   r   r   r   )r   r?   r7   r8   r9   s        r   generate_aliaseszAliasGenerator.generate_aliasesz   sa     $$WsfjA//0BS,XaDbdno"223H3&R\]&(;;;r   )r=   z;Literal['alias', 'validation_alias', 'serialization_alias']r>   z<tuple[type[str] | type[AliasPath] | type[AliasChoices], ...]r?   r   r$   z%str | AliasPath | AliasChoices | None)r?   r   r$   zDtuple[str | None, str | AliasPath | AliasChoices | None, str | None])
r'   r(   r)   r*   r7   r+   r8   r9   rA   rC   r,   r   r   r
   r
   V   s]     *.E&-OSLS7;4;O T 	
 
/(
<r   r
   r,   )r*   
__future__r   dataclassestypingr   r   r   pydantic_corer   	_internalr	   __all__	dataclass
slots_truer   r   r
   r,   r   r   <module>rL      s    ' "  ) ) + *
9 8,778% % 9%P 8,778  9: 8,778-< -< 9-<r   