
    ,hI                    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   a  !!! abstract "Usage Documentation"
        [`AliasPath` and `AliasChoices`](../concepts/alias.md#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      R/var/www/html/Resume-Scraper/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'   s_      	)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   a  !!! abstract "Usage Documentation"
        [`AliasPath` and `AliasChoices`](../concepts/alias.md#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__F   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_aliasesI   sP     *, 	$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   9   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  !!! abstract "Usage Documentation"
        [Using an `AliasGenerator`](../concepts/alias.md#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_aliasi   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_aliases}   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
   X   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&R 8,778  9< 8,778.< .< 9.<r   