o
    "“itœ  ã                   @  s\  U d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ ddlmZmZmZmZmZmZmZmZmZ dd	lmZ dd
lm Z  ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/ ddlm0Z0 ddl1m2Z2 ddl3m4Z4 er•ddl5m6Z6 g d¢Z7					d]d^d d!„Z8ed"ƒZ9i d#d$d%d#fd_d6d7„Z:	#	$	%	#d`dad8d9„Z;i d%d$d%d%d%d#fdbd>d?„Z<	%	$	%	%	%	#dcddd@dA„Z=eee	 ge	f Z>ee?e	dBf ge	f Z@dCeAdD< 		dedfdIdJ„ZBeee	e	f ge	f ZC		dedgdNdO„ZDeDZEdPeAdQ< eFeed%fdhdVdW„ZGeGZHdPeAdX< 	didjdZd[„ZIeIZJdPeAd\< dS )ké    )ÚannotationsN)ÚCallableÚIterableÚMapping)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚTypeVar)ÚNOTHINGÚ	AttributeÚFactory)Ú	NoDefaulté   )	ÚANIESÚ	TypeAliasÚadapted_fieldsÚget_argsÚ
get_originÚis_annotatedÚis_bareÚis_bare_finalÚ
is_generic)Údeep_copy_with)ÚUnstructureHook)ÚAttributeValidationNoteÚClassValidationErrorÚForbiddenExtraKeysErrorÚIterableValidationErrorÚIterableValidationNoteÚStructureHandlerNotFoundError)Úidentity)ÚSimpleStructureHooké   )ÚAttributeOverrideÚalready_generatingÚneutral)Úgenerate_mapping)Úgenerate_unique_filename)Úfind_structure_handler)ÚBaseConverter)Úmake_dict_structure_fnÚ!make_dict_structure_fn_from_attrsÚmake_dict_unstructure_fnÚ#make_dict_unstructure_fn_from_attrsÚ make_hetero_tuple_unstructure_fnÚmake_iterable_unstructure_fnÚmake_mapping_structure_fnÚmake_mapping_unstructure_fnÚomit_if_defaultúbool | NoneÚrenameú
str | NoneÚomitÚstruct_hookú Callable[[Any, Any], Any] | NoneÚunstruct_hookúCallable[[Any], Any] | NoneÚreturnr$   c                 C  s   t | ||||ƒS )z‰Override how a particular field is handled.

    :param omit: Whether to skip the field or not. `None` means apply default handling.
    )r$   )r3   r5   r7   r8   r:   © r=   úS/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cattrs/gen/__init__.pyÚoverride5   s   r?   ÚTFTÚfrom_converterÚattrsúlist[Attribute]Úclútype[T]Ú	converterr*   Útypevar_mapúdict[str, Any]Ú_cattrs_omit_if_defaultÚboolÚ_cattrs_use_linecacheÚ_cattrs_use_aliasú bool | Literal['from_converter']Ú_cattrs_include_init_falseÚkwargsúCallable[[T], dict[str, Any]]c               	   K  sX  d|j  }	i }
g }g }i }|dkrt|ddƒ}| D �]2}|j}| |t¡}|jr)q|jdu r4|js4|s4q|jdu rA|s=|n|j}n|j}|j	}d}|j
durR|j
}n_|jdur®|j}t|tƒrn|j |v rj||j  }n|j}nt|ƒr€t|ƒs€t|ƒs€t|||ƒ}|du r­t|ƒr—|j	tur—t|j	tƒs—|j	j}z	|j|dd�}W n ty¬   |j}Y nw n|j}|tk}|sÍd|› �}||
|< |||< |› d|› d	�}nd
|› �}|tu�r@|rÞ|jdusâ|j�r@d|› �}t|tƒ�r |j|
|< |j||< |j�r| d|› d|› d�¡ n| d|› d|› d�¡ | d|› d|› �¡ q||
|< |||< | d|› d|› d�¡ | d|› d|› �¡ q| d|› d|› d�¡ qd dd„ |D ƒ¡}|�r_d|› �}| ¡ D ]	\}}||
|< �qcd|	› d|› d�gdg dd„ |D ƒ dg | dg }d  |¡}t |d!|�r–|ng d"�}t!t"||d#ƒ|
ƒ |
|	 }||_#|S )$a“  
    Generate a specialized dict unstructuring function for a list of attributes.

    Usually used as a building block by more specialized hook factories.

    Any provided overrides are attached to the generated function under the
    `overrides` attribute.

    :param cl: The class for which the function is generated; used mostly for its name,
        module name and qualname.
    :param _cattrs_omit_if_default: if true, attributes equal to their default values
        will be omitted in the result dictionary.
    :param _cattrs_use_alias: If true, the attribute alias will be used as the
        dictionary key by default.
    :param _cattrs_include_init_false: If true, _attrs_ fields marked as `init=False`
        will be included.

    ..  versionadded:: 24.1.0
    ..  versionchanged:: 25.2.0
        The `_cattrs_use_alias` parameter takes its value from the given converter
        by default.
    Úunstructure_rA   Ú	use_aliasFN©Úcache_resultÚ
__c_unstr_z
(instance.ú)ú	instance.Ú__c_def_z  if instance.z != z(instance):z():ú	    res['ú'] = ú:ú'z': ú,ú, c                 S  ó   g | ]	}|› d |› �‘qS ©ú=r=   ©Ú.0Úir=   r=   r>   Ú
<listcomp>Ã   ó    z7make_dict_unstructure_fn_from_attrs.<locals>.<listcomp>údef z	(instanceú):ú	  res = {c                 S  ó   g | ]}d |› �‘qS ©z    r=   ©rc   Úliner=   r=   r>   re   Ì   ó    z  }ú  return resÚ
Úunstructure©ÚlinesÚexec)$Ú__name__ÚgetattrÚnameÚgetr&   r7   Úinitr5   ÚaliasÚdefaultr:   ÚtypeÚ
isinstancer
   rq   r   r   r   r   r   r   r   Ú	__class__Úget_unstructure_hookÚRecursionErrorr!   r3   ÚfactoryÚ
takes_selfÚappendÚjoinÚitemsr(   ÚevalÚcompileÚ	overrides) rB   rD   rF   rG   rI   rK   rL   rN   rO   Úfn_nameÚglobsrs   Úinvocation_linesÚinternal_arg_partsÚaÚ	attr_namer?   ÚknÚdÚhandlerÚtÚis_identityÚunstruct_handler_nameÚinvokeÚdef_nameÚinternal_arg_lineÚkÚvÚtotal_linesÚscriptÚfnameÚresr=   r=   r>   r.   F   s¼   
"





ÿ

ÿ
þõ


ÿ
ÿ



ÿþýüûÿ
ÿr.   c              	   K  sØ   t | ƒ}t|p| ƒ}i }	|dkrt|ddƒ}t| ƒr%t| |	ƒ}	|dur%|} ztj}
W n ty9   tƒ }
|
t_Y nw | |
v rAt	ƒ ‚|
 
| ¡ zt|| ||	f||||dœ|¤ŽW |
 | ¡ |
sat`S S |
 | ¡ |
skt`w )a+  
    Generate a specialized dict unstructuring function for an attrs class or a
    dataclass.

    Any provided overrides are attached to the generated function under the
    `overrides` attribute.

    :param _cattrs_omit_if_default: if true, attributes equal to their default values
        will be omitted in the result dictionary.
    :param _cattrs_use_alias: If true, the attribute alias will be used as the
        dictionary key by default.
    :param _cattrs_include_init_false: If true, _attrs_ fields marked as `init=False`
        will be included.

    ..  versionadded:: 23.2.0 *_cattrs_use_alias*
    ..  versionadded:: 23.2.0 *_cattrs_include_init_false*
    ..  versionchanged:: 25.2.0
        The `_cattrs_use_alias` parameter takes its value from the given converter
        by default.
    rA   rR   FN)rI   rK   rL   rN   )r   r   rv   r   r'   r%   Úworking_setÚAttributeErrorÚsetr€   Úaddr.   Úremove)rD   rF   rI   rK   rL   rN   rO   ÚoriginrB   Úmappingrž   r=   r=   r>   r-   Þ   sN   


þ
üø	÷
ÿ
ÿr-   Ú_cattrs_forbid_extra_keysÚ _cattrs_prefer_attrib_convertersÚ_cattrs_detailed_validationú)SimpleStructureHook[Mapping[str, Any], T]c
           ,      K  s¾
  |j }d| }t|ddƒD ]=}z||j  }W n ty*   |j }td|› d�|ƒd‚w t|ddƒp4t|ƒ}t dd	|¡}t d
d|¡}|d	|› �7 }qd|i}i }g }g }g }g }tƒ }|dkrft|ddƒ}|dkrpt|ddƒ}|dkrw|j}|dkr~|j	}|rˆ||d< t
|d< |�r³| d¡ | d¡ | d¡ t|d< t|d< | D �]Á}|j}|
 |t¡}|jr´q¤|jdu r¿|js¿|	s¿q¤|j}t|tƒrÏ| |j |¡}nt|ƒrát|ƒsát|ƒsát|||ƒ}|jdurê|j}nt||||ƒ}d|› �}|durþ|||< |j}|jdu �r|�s|n|j}n|j}| |¡ d} |j�sÈ|jt u�r4| | › d|› d�¡ | › d�} | | › d�¡ | › d�} d|› �}!|||!< |du�r‰||j!k�rk|||< | | › d|› d|› d |› d!�¡ n,d|› �}"|||"< | | › d|› d|› d |› d"|"› d#�
¡ n| | › d|› d$|› d%�¡ | dd&… } | | › d'�¡ | › d�} | | › d(|j"› d)|› d*|› d+|› d,�
¡ | | › d-�¡ q¤|jt u�rÞ| | › d|› d�¡ | › d�} | | › d�¡ | › d�} d|› �}!|||!< |�r(||j!k�r|||< | | › d.|› d/|› d |› d!�¡ n#| | › d.|› d/|› d |› d"|!› d#�
¡ n| | › d.|› d0|› d%�¡ | dd&… } | | › d'�¡ | › d�} | | › d(|j"› d)|› d*|› d+|› d,�
¡ | | › d-�¡ q¤|�rp|g d1¢7 }| d2|›d3�¡ |�s•d4gd5g d6d7„ |D ƒ d8g d9|›d:�g }#�n†d4gd;g d<d7„ |D ƒ d8g d9|›d:�g }#| d=¡ �nhg }$| D �]}|j}|
 |t¡}|j�rÉ�q·|jdu �rØ|j�sØ|	�sØ�q·|jt u�rå|$ |¡ �q·|j}t|tƒ�rö| |j |¡}nt|ƒ�rt|ƒ�st|ƒ�st|||ƒ}|jdu�r|j}nt||||ƒ}|jdu �r+|�s'|n|j}n|j}| |¡ |j�s…|du�rud|› �}|||< ||j!k�r\|||< d>|› d|› d |› d!�}%n"d|› �}"|||"< d>|› d|› d |› d"|"› d#�	}%n	d>|› d$|› d%�}%| |%¡ �q·|�r¹d|› �}|||< ||j!k�r¤|||< |› d |› d?�}&nd|› �}"|||"< |› d |› d"|"› d@�}&ndA|› dB�}&|j#�rË|j› dC|&› �}&| |&¡ �q·|$�rï| d¡ | d¡ |$D �]}|j}|
 |t¡}|j}t|tƒ�rþ| |j |¡}nt|ƒ�rt|ƒ�st|ƒ�st|||ƒ}|jdu�r|j}nt||||ƒ}d|› �}|||< |jdu �r<|�s8|n|j}n|j}| |¡ |j�sš| dD|› d�¡ |�rŒ||j!k�ro|||< | dE|› d|› d |› d!�¡ �qád|› �}"|||"< | dE|› d|› d |› d"|"› d#�	¡ �qá| dE|› d$|› d%�¡ �qá| dD|› d�¡ |�rà||j!k�rÂ|||< | dF|j› d/|› d |› d!�¡ �qád|› �}"|||"< | dF|j› d/|› d |› d"|"› d#�	¡ �qá| dF|j› d0|› d%�¡ �qá|�s dGgdHd7„ |D ƒ dIg }#ndJgdKd7„ |D ƒ dIg }#| d=¡ |�r|g dL¢7 }dM $dNd7„ |D ƒ¡}'| %|¡ dO|› dP|'› dQ�g|¢|¢|#¢|¢}(dR $|(¡})t&|dS|�rI|(ng dT�}*t't(|)|*dUƒ|ƒ || }+|
|+_)|+S )Va’  
    Generate a specialized dict structuring function for a list of attributes.

    Usually used as a building block by more specialized hook factories.

    Any provided overrides are attached to the generated function under the
    `overrides` attribute.

    :param _cattrs_forbid_extra_keys: Whether the structuring function should raise a
        `ForbiddenExtraKeysError` if unknown keys are encountered.
    :param _cattrs_use_linecache: Whether to store the source code in the Python
        linecache.
    :param _cattrs_prefer_attrib_converters: If an _attrs_ converter is present on a
        field, use it instead of processing the field normally.
    :param _cattrs_detailed_validation: Whether to use a slower mode that produces
        more detailed errors.
    :param _cattrs_use_alias: If true, the attribute alias will be used as the
        dictionary key by default.
    :param _cattrs_include_init_false: If true, _attrs_ fields marked as `init=False`
        will be included.

    ..  versionadded:: 24.1.0
    ..  versionchanged:: 25.2.0
        The `_cattrs_use_alias` parameter takes its value from the given converter
        by default.
    Ú
structure_Ú__parameters__r=   z"Missing type for generic argument z, specify it when structuring.Nru   z[\[\.\] ,<>]Ú_z\|ÚuÚ__clrA   Úforbid_extra_keysFrR   Ú__c_aÚ__c_fekez
  res = {}z  errors = []z**res,Ú__c_cveÚ__c_avnÚ__c_structure_z  zif 'z' in o:ztry:Ú	__c_type_rW   z = z(o['z'])z'], rV   z = o['z']éþÿÿÿzexcept Exception as e:zHe.__notes__ = getattr(e, '__notes__', []) + [__c_avn("Structuring class z @ attribute z", "z", __c_type_z)]zerrors.append(e)zres['rZ   z'] = o[')ú(  unknown_fields = set(o.keys()) - __c_aú  if unknown_fields:z5    errors.append(__c_feke('', __cl, unknown_fields))z2  if errors: raise __c_cve('While structuring ' + z, errors, __cl)z  try:z    return __cl(c                 S  rj   ©z      r=   rl   r=   r=   r>   re   ð  rn   z5make_dict_structure_fn_from_attrs.<locals>.<listcomp>ú    )z@  except Exception as exc: raise __c_cve('While structuring ' + z, [exc], __cl)z    instance = __cl(c                 S  rj   r¸   r=   rl   r=   r=   r>   re   ú  rn   z  return instancez  instance.z']),z),zo['z'],ra   z  if 'z    instance.rY   z  return __cl(c                 S  rj   rk   r=   rl   r=   r=   r>   re   Œ  rn   z  )z  instance = __cl(c                 S  rj   rk   r=   rl   r=   r=   r>   re   ’  rn   )r¶   r·   z,    raise __c_feke('', __cl, unknown_fields)r^   c                 S  r_   r`   r=   rb   r=   r=   r>   re   Ÿ  rf   rg   z(o, _=__cl, rh   rp   Ú	structurerr   rt   )*ru   rv   ÚKeyErrorr    ÚstrÚreÚsubr    Údetailed_validationÚ_prefer_attrib_convertersr   rƒ   r   r   rw   rx   r&   r7   ry   r|   r}   r
   r   r   r   r   r8   r)   rz   r5   r¡   r{   r   Ú_structure_callÚ__qualname__Úkw_onlyr„   Úupdater(   r†   r‡   rˆ   ),rB   rD   rF   rG   r¥   rK   r¦   r§   rL   rN   rO   Úcl_namer‰   ÚpÚ	name_baseÚpnrw   rŒ   rŠ   rs   Ú
post_linesÚpi_linesr‹   Úallowed_fieldsr�   Úanr?   r’   r‘   Ústruct_handler_nameÚianr�   rd   Ú	type_nameÚtnÚinstantiation_linesÚnon_requiredÚpi_lineÚinvocation_liner—   rš   r›   rœ   r�   r=   r=   r>   r,   &  s8  *
þýþ





ÿ





ÿ
 ÿ
"ÿ


ÿ ÿ
"ÿ
ÿÿþý
ÿüÿÿþý
ÿüÿ	

ÿ



ÿ




ÿ

ÿ
ÿÿ
ÿÿþÿÿþÿ

ÿþýüû
ÿr,   c              	   K  sú   i }	t | ƒrt| ƒ}
t| |	ƒ}	|
dur|
} t| ddƒD ]}
t |
ƒr/t|
ƒ d¡s/t|
|	ƒ}	 nqt| ƒ}ztj}W n t	yH   t
ƒ }|t_Y nw | |v rPtƒ ‚| | ¡ zt|| ||	f||||||dœ|¤ŽW | | ¡ |srt`S S | | ¡ |s|t`w )aì  
    Generate a specialized dict structuring function for an attrs class or
    dataclass.

    Any provided overrides are attached to the generated function under the
    `overrides` attribute.

    :param _cattrs_forbid_extra_keys: Whether the structuring function should raise a
        `ForbiddenExtraKeysError` if unknown keys are encountered.
    :param _cattrs_use_linecache: Whether to store the source code in the Python
        linecache.
    :param _cattrs_prefer_attrib_converters: If an _attrs_ converter is present on a
        field, use it instead of processing the field normally.
    :param _cattrs_detailed_validation: Whether to use a slower mode that produces
        more detailed errors.
    :param _cattrs_use_alias: If true, the attribute alias will be used as the
        dictionary key by default.
    :param _cattrs_include_init_false: If true, _attrs_ fields marked as `init=False`
        will be included.

    ..  versionadded:: 23.2.0 *_cattrs_use_alias*
    ..  versionadded:: 23.2.0 *_cattrs_include_init_false*
    ..  versionchanged:: 23.2.0
        The `_cattrs_forbid_extra_keys` and `_cattrs_detailed_validation` parameters
        take their values from the given converter by default.
    ..  versionchanged:: 24.1.0
        The `_cattrs_prefer_attrib_converters` parameter takes its value from the given
        converter by default.
    ..  versionchanged:: 25.2.0
        The `_cattrs_use_alias` parameter takes its value from the given converter
        by default.
    NÚ__orig_bases__r=   ztyping.Generic)r¥   rK   r¦   r§   rL   rN   )r   r   r'   rv   r¼   Ú
startswithr   r%   rž   rŸ   r    r€   r¡   r,   r¢   )rD   rF   r¥   rK   r¦   r§   rL   rN   rO   r¤   ÚbaserB   rž   r=   r=   r>   r+   ·  sX   .

€

þ
üöõ
ÿ
ÿr+   .r   ÚHeteroTupleUnstructureFnr   Úunstructure_toÚ	type_argsútuple | Nonec           
        s  d}|du r
t | ƒn|}‡ fdd„|D ƒ}dd„ t|ƒD ƒ}|tur(|p%| |d< g }| d|› d	�¡ |tur=| d
¡ n| d¡ tt|ƒƒD ]}|| tkrZ| d|› d�¡ qH| d|› d|› d�¡ qH|turq| d¡ n| d¡ g |¢d‘}	ttd 	|	¡ddƒ|ƒ || S )z‹Generate a specialized unstructure function for a heterogenous tuple.

    :param type_args: If provided, override the type arguments.
    Úunstructure_tupleNc                   s   g | ]}ˆ   |¡‘qS r=   )r   )rc   Útype_arg©rF   r=   r>   re   *  rn   z4make_hetero_tuple_unstructure_fn.<locals>.<listcomp>c                 S  s   i | ]
\}}d |› �|“qS )Ú
__cattr_u_r=   )rc   rd   Úhr=   r=   r>   Ú
<dictcomp>,  s    z4make_hetero_tuple_unstructure_fn.<locals>.<dictcomp>Ú__cattr_seq_clrg   z(tup):z    res = __cattr_seq_cl((z    res = (z        tup[z],z        __cattr_u_z(tup[z]),z    ))r¹   ú    return resrp   Ú rt   )
r   Ú	enumerateÚtuplerƒ   ÚrangeÚlenr!   r†   r‡   r„   )
rD   rF   rÙ   rÚ   r‰   ÚhandlersrŠ   rs   rd   rš   r=   rÞ   r>   r/     s*   


r/   Úkey_handlerú'Callable[[Any, Any | None], Any] | NoneÚMappingUnstructureFnc                 C  s^  |p|j }|j }d}| }t| ddƒdurHt| ƒ}t|ƒdkr#|\}	}
n|t}	}
|p0|j|	dd�}|tkr7d}|j|
dd�}|tkrDd}t| ƒ}||dœ}|durSdnd	}|dur[d
nd}d|› d�g}|tu sp|du r‡|tu r‡|du rz|du rztS | 	d|› d|› d�¡ n|pŠ| |d< | 	d|› d|› d�¡ g |¢d‘}t
td |¡ddƒ|ƒ || S )z¾Generate a specialized unstructure function for a mapping.

    :param unstructure_to: The class to unstructure to; defaults to the
        same class as the mapping being unstructured.
    Úunstructure_mappingÚ__args__Nr   FrS   )Ú__cattr_k_uÚ__cattr_v_uz__cattr_k_u(k)r˜   z__cattr_v_u(v)r™   rg   z
(mapping):z    return {ú: ú for k, v in mapping.items()}Ú__cattr_mapping_clz    res = __cattr_mapping_cl((r^   z) for k, v in mapping.items())rã   rp   rä   rt   )rq   rv   r   rè   r   r   r!   r   Údictrƒ   r†   r‡   r„   )rD   rF   rÙ   rê   ÚkhÚval_handlerr‰   r£   ÚargsÚkey_argÚval_argrŠ   Úk_uÚv_urs   r=   r=   r>   Úmapping_unstructure_factoryL  s>   



ÿrü   r   r2   Ústructure_tor|   r¿   ú)SimpleStructureHook[Mapping[Any, Any], T]c                 C  sô  d}|dkr	|j }d|i}g }i }	t| ƒs”t| ƒ}
t|
ƒdkr0|
\}}|tu r)|}|tu r/|}n|tur<|tu r<|
\}n|tu rH|turH|
\}n|
\}t}|tv oT|tv }|s“|j|dd�}||jkre|}|j|dd�}||jkrs|}||d< ||d< ||d	< ||d
< ||kr‰dnd}||kr‘dnd}nd}|rž| 	d¡ nŒ|�rt
|	d< t|	d< |tur¯|nt|	d< |tur¹|nt|	d< t|d< | 	d¡ | 	d¡ | 	d¡ | 	d|› �¡ | 	d¡ | 	d¡ | 	d¡ | 	d¡ | 	d¡ | 	d|› �¡ | 	d¡ | 	d¡ | 	d ¡ | 	d¡ | 	d!¡ | 	d"t| ƒ›d#�¡ n| 	d$|› d%|› d&�¡ |tu�r4| 	d'¡ d( d)d*„ |	D ƒ¡}|�rFd(|› �}|	 ¡ D ]	\}}|||< �qJ| |d+< d,|› d-|› d.�}|g|¢d/‘}d0 |¡}tt|d1d2ƒ|ƒ || S )3z8Generate a specialized structure function for a mapping.Ústructure_mappingrA   ró   r   FrS   Ú__cattr_k_tÚ__cattr_v_tÚ__cattr_k_sÚ__cattr_v_sz__cattr_k_s(k, __cattr_k_t)z__cattr_k_s(k)z__cattr_v_s(v, __cattr_v_t)z__cattr_v_s(v)Tz  res = dict(mapping)r   r   Úval_typeÚkey_typerå   z  res = {}; errors = []z  for k, v in mapping.items():z    try:z      value = z    except Exception as e:z�      e.__notes__ = getattr(e, '__notes__', []) + [IterableValidationNote(f'Structuring mapping value @ key {k!r}', k, val_type)]z      errors.append(e)z      continuez      key = z      res[key] = valuez      e.__notes__ = getattr(e, '__notes__', []) + [IterableValidationNote(f'Structuring mapping key @ key {k!r}', k, key_type)]z  if errors:z9    raise IterableValidationError('While structuring ' + z, errors, __cattr_mapping_cl)ri   rñ   rò   z  res = __cattr_mapping_cl(res)r^   c                 S  r_   r`   r=   rb   r=   r=   r>   re   ú  rf   z-mapping_structure_factory.<locals>.<listcomp>rD   rg   z(mapping, cl=clrh   ro   rp   rä   rt   )r¿   r   r   rè   r   r   r   Úget_structure_hookrÁ   rƒ   r   r   rå   Úreprrô   r„   r…   r†   r‡   )rD   rF   rý   r  r  r¿   r‰   rŠ   rs   rŒ   r÷   Úkey_arg_candÚval_arg_candÚis_bare_dictrê   rö   Úk_sÚv_sr—   r˜   r™   Údef_linerš   r›   r=   r=   r>   Úmapping_structure_factoryŽ  s²   	€

ÿýÿý€ÿÿ



ÿ




ÿ

ÿ



r  r1   r   c                 C  sv   |j }t| ddƒdvr0| jd }t|tƒr!t|dtƒ}|tu r!t}|j|dd�}|tkr0|p/| S |p3| |fdd	„}|S )
zÚA hook factory for unstructuring iterables.

    :param unstructure_to: Force unstructuring to this type, if provided.

    ..  versionchanged:: 24.2.0
        `typing.NoDefault` is now correctly handled as `Any`.
    rî   N)Nr=   r   Ú__default__FrS   c                   s   |‡ fdd„| D ƒƒS )Nc                 3  s   � | ]}ˆ |ƒV  qd S ©Nr=   rb   ©Ú_hookr=   r>   Ú	<genexpr>)  s   € zMiterable_unstructure_factory.<locals>.unstructure_iterable.<locals>.<genexpr>r=   )ÚiterableÚ_seq_clr  r=   r  r>   Úunstructure_iterable(  s   z:iterable_unstructure_factory.<locals>.unstructure_iterable)	rq   rv   rî   r}   r
   r   r   r   r!   )rD   rF   rÙ   r‘   rÝ   r  r=   r=   r>   Úiterable_unstructure_factory  s   


r  r0   )NNNNN)r3   r4   r5   r6   r7   r4   r8   r9   r:   r;   r<   r$   )rB   rC   rD   rE   rF   r*   rG   rH   rI   rJ   rK   rJ   rL   rM   rN   rJ   rO   r$   r<   rP   )FTrA   F)rD   rE   rF   r*   rI   rJ   rK   rJ   rL   rM   rN   rJ   rO   r$   r<   rP   )rB   rC   rD   rE   rF   r*   rG   rH   r¥   rM   rK   rJ   r¦   rM   r§   rM   rL   rM   rN   rJ   rO   r$   r<   r¨   )rA   TrA   rA   rA   F)rD   rE   rF   r*   r¥   rM   rK   rJ   r¦   rM   r§   rM   rL   rM   rN   rJ   rO   r$   r<   r¨   )NN)
rD   r   rF   r*   rÙ   r   rÚ   rÛ   r<   rØ   )
rD   r   rF   r*   rÙ   r   rê   rë   r<   rì   )
rD   rE   rF   r*   rý   r|   r¿   rM   r<   rþ   r  )rD   r   rF   r*   rÙ   r   r<   r   )KÚ
__future__r   r½   Úcollections.abcr   r   r   Útypingr   r   r   r	   r
   rB   r   r   r   Útyping_extensionsr   Ú_compatr   r   r   r   r   r   r   r   r   Ú	_genericsr   Údispatchr   Úerrorsr   r   r   r   r   r    Úfnsr!   Útypesr"   Ú_constsr$   r%   r&   r'   Ú_lcr(   Ú_sharedr)   Ú
convertersr*   Ú__all__r?   r@   r.   r-   r,   r+   ÚIterableUnstructureFnræ   rØ   Ú__annotations__r/   rì   rü   r2   rô   r  r1   r  r0   r=   r=   r=   r>   Ú<module>   s–    , ûø úLô   ö]ü-ü>ú|ÿ 