ó
    Eñi‘ž ã                  óô  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKJrJr  S SKJr  S SKJrJrJr  SSKJrJrJr  SSKJrJrJrJrJrJr  SS	K J!r!J"r"J#r#J$r$  \%RL                  r'S
r(Sr)Sr*\
RV                  " 0 5      r,\%" 5       r-\R\                  " \R^                  \R`                  5      r1 " S S\Rd                  5      r3\3Rh                  r4  " S S\55      r6\4SSSSSSSSSSSSSS4S jr7  SU         SVS jjr8 SW         SXS jjr9SYS jr: " S S\5      r;S r<S r=  SZS jr>S r?  S[S jr@S rAS rBS rCS  rD " S! S"5      rES# rFS$ rG S\S% jrH                         S]S' jrI\IrJ S( rKS^S) jrL          S_S* jrMS`S+ jrNS, rOSaS- jrPS. rQSWS/ jrRSbS0 jrSScS1 jrTS2 rUS3 rVS4 r0S5 rW  SdS6 jrXSeS7 jrY          SfS9 jrZSgS: jr[          SfS; jr\      ShS< jr]                          SiS= jr^SjS> jr_ " S? S@5      r`\`RÂ                   V s/ s H  n \`" U \4SU SA:g  SSS&U SB:g  SS&\_" U 5      SC9PM!     sn rb\N" \R" \T" \`\bSD9\b Vs/ s H  oRÆ                  SE:w  d  M  UPM     snSD9\b Vs/ s H)  oRÈ                  (       d  M  URÆ                  SE:w  d  M'  UPM+     snSD9r` " SF SG5      re\R" \T" \e5      5      re " SH SI5      rf\fRÂ                   V s/ s H  n \`" U \4SSSSS&SSS&\_" U 5      SC9PM     sn rg\R" \T" \f\gSD9\gSD9rf " SJ SK5      rh\hRÂ                   V s/ s H  n \`" U \4SSSSS&SSS&SL9
PM     sn ri\N" \R" \T" \h\iSD9\iSD9\iSD9rh " SM S85      rjSN V s/ s H  n \`" U \4SSSSS&SSS&SL9
PM     sn ri\N" \R" \T" \j\iSD9\iSD9\iSD9rj\%4S4SO jrk\I" SSSP9 " SQ SR5      5       rlSS rmST r.gs  sn f s  snf s  snf s  sn f s  sn f s  sn f )ké    )ÚannotationsN)ÚCallableÚMapping)Úcached_property)ÚAnyÚ
NamedTupleÚTypeVaré   )Ú_compatÚ_configÚsetters)ÚPY_3_10_PLUSÚPY_3_11_PLUSÚPY_3_13_PLUSÚ_AnnotationExtractorÚ_get_annotationsÚget_generic_base)ÚDefaultAlreadySetErrorÚFrozenInstanceErrorÚNotAnAttrsClassErrorÚUnannotatedAttributeErrorz__attr_factory_%s)ztyping.ClassVarz
t.ClassVarÚClassVarztyping_extensions.ClassVarÚ_attrs_cached_hashc                  óF   • \ rS rSrSr\R                  " 5       rS rS r	Sr
g)Ú_Nothingé>   a.  
Sentinel to indicate the lack of a value when `None` is ambiguous.

If extending attrs, you can use ``typing.Literal[NOTHING]`` to show
that a value may be ``NOTHING``.

.. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False.
.. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant.
c                ó   • g)NÚNOTHING© ©Úselfs    ÚG/home/mande/repo/quber/.venv/lib/python3.13/site-packages/attr/_make.pyÚ__repr__Ú_Nothing.__repr__K   s   € Øó    c                ó   • g)NFr   r    s    r"   Ú__bool__Ú_Nothing.__bool__N   s   € Ør%   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚenumÚautor   r#   r'   Ú__static_attributes__r   r%   r"   r   r   >   s   † ñð �iŠi‹k€Gòõr%   r   c                  ó2   • \ rS rSrSr\" S5      S4S jrSrg)Ú_CacheHashWrapperéZ   ac  
An integer subclass that pickles / copies as None

This is used for non-slots classes with ``cache_hash=True``, to avoid
serializing a potentially (even likely) invalid hash value. Since `None`
is the default value for uncalculated hashes, whenever this is copied,
the copy's value for the hash should automatically reset.

See GH #613 for more details.
Nr   c                ó   • X4$ ©Nr   )r!   Ú_none_constructorÚ_argss      r"   Ú
__reduce__Ú_CacheHashWrapper.__reduce__f   s   € Ø Ð'Ð'r%   )r)   r*   r+   r,   r-   Útyper8   r0   r   r%   r"   r2   r2   Z   s   † ñ	ñ ,0°«:¸R÷ (r%   r2   Tc                óZ  • [        X;US5      u  p¿nnUb  USLa  USLa  Sn[        U5      eU	b>  U [        La  Sn[        U5      e[	        U	5      (       d  Sn[        U5      e[        U	5      n Uc  0 n[        U[        [        45      (       a  [        R                  " U6 nU(       a#  [        U[        [        45      (       a  [        U6 nU(       a#  [        U[        [        45      (       a  [        U6 n[        S0 SU _SU_S	U_S
S_SU_SU_SU_SU_SU_SU
_SU_SU_SU_SU_SU_SU_6$ )a³  
Create a new field / attribute on a class.

Identical to `attrs.field`, except it's not keyword-only.

Consider using `attrs.field` in new code (``attr.ib`` will *never* go away,
though).

..  warning::

    Does **nothing** unless the class is also decorated with
    `attr.s` (or similar)!


.. versionadded:: 15.2.0 *convert*
.. versionadded:: 16.3.0 *metadata*
.. versionchanged:: 17.1.0 *validator* can be a ``list`` now.
.. versionchanged:: 17.1.0
   *hash* is `None` and therefore mirrors *eq* by default.
.. versionadded:: 17.3.0 *type*
.. deprecated:: 17.4.0 *convert*
.. versionadded:: 17.4.0
   *converter* as a replacement for the deprecated *convert* to achieve
   consistency with other noun-based arguments.
.. versionadded:: 18.1.0
   ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``.
.. versionadded:: 18.2.0 *kw_only*
.. versionchanged:: 19.2.0 *convert* keyword argument removed.
.. versionchanged:: 19.2.0 *repr* also accepts a custom callable.
.. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
.. versionadded:: 19.2.0 *eq* and *order*
.. versionadded:: 20.1.0 *on_setattr*
.. versionchanged:: 20.3.0 *kw_only* backported to Python 2
.. versionchanged:: 21.1.0
   *eq*, *order*, and *cmp* also accept a custom callable
.. versionchanged:: 21.1.0 *cmp* undeprecated
.. versionadded:: 22.2.0 *alias*
.. versionchanged:: 25.4.0
   *kw_only* can now be None, and its default is also changed from False to
   None.
TNFú6Invalid value for hash.  Must be True, False, or None.z=The `default` and `factory` arguments are mutually exclusive.z*The `factory` argument must be a callable.ÚdefaultÚ	validatorÚreprÚcmpÚhashÚinitÚ	converterÚmetadatar:   Úkw_onlyÚeqÚeq_keyÚorderÚ	order_keyÚ
on_setattrÚaliasr   )Ú_determine_attrib_eq_orderÚ	TypeErrorr   Ú
ValueErrorÚcallableÚFactoryÚ
isinstanceÚlistÚtupler   ÚpipeÚand_Ú_CountingAttr)r=   r>   r?   r@   rA   rB   rD   r:   rC   ÚfactoryrE   rF   rH   rJ   rK   rG   rI   Úmsgs                     r"   ÚattribrY   j   s—  € ôt $>Ø�˜ó$Ñ €B��yð Ñ˜D¨Ò,°¸UÒ1BØFˆÜ˜‹nÐàÑØœ'Ò!àOð ô ˜S“/Ð!Ü˜× Ñ Ø>ˆCÜ˜S“/Ð!Ü˜'Ó"ˆàÑØˆô �*œt¤U˜m×,Ñ,Ü—\’\ :Ð.ˆ
æ”Z 	¬D´%¨=×9Ñ9Ü˜)Ð$ˆ	æ”Z 	¬D´%¨=×9Ñ9Ü˜)Ð$ˆ	äò Ùðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  ð!ð r%   c                ó4   • [        XS5      n[        XAU5        g)zO
Evaluate the script with the given global (globs) and local (locs)
variables.
ÚexecN)ÚcompileÚeval)ÚscriptÚglobsÚlocsÚfilenameÚbytecodes        r"   Ú_compile_and_evalrc   Ø   s   € ô �v¨Ó0€HÜˆ˜$Õr%   c                óà   • Uc  0 OUnSnUn [        U 5      SU R                  S5      U4n[        R                  R	                  X5      nX‡:X  a  OUSS  SU S3nUS-  nMU  [        XXA5        U$ )zH
Cache the script with _linecache_, compile it and return the _locals_.
Nr
   TéÿÿÿÿÚ-Ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultrc   )	r^   ra   r_   Úlocalsr`   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals	            r"   Ú_linecache_and_compilerr   æ   s˜   € ð ‘‰2 V€Dð €EØ€MØ
ä�‹KØØ×Ñ˜dÓ#Øð	
ˆô —/‘/×,Ñ,¨XÓGˆØÓ%Øà# C RÐ(Ð)¨¨5¨'°Ð3ˆØ�‰
ˆñ ô �f TÔ4à€Kr%   c                ó‚   • U  S3n0 n[        U5       H  u  pEU4S jn[        U5      X5'   M     [        U[        4U5      $ )zÑ
Create a tuple subclass to hold `Attribute`s for an `attrs` class.

The subclass is a bare tuple with properties for names.

class MyClassAttributes(tuple):
    __slots__ = ()
    x = property(itemgetter(0))
Ú
Attributesc                ó
   • X   $ r5   r   )r!   Úis     r"   ÚgetterÚ&_make_attr_tuple_class.<locals>.getter  s	   € Ø‘7ˆNr%   )Ú	enumerateÚpropertyr:   rS   )Úcls_nameÚ
attr_namesÚattr_class_nameÚbodyrv   Ú	attr_namerw   s          r"   Ú_make_attr_tuple_classr€   	  sO   € ð "˜
 *Ð-€OØ€DÜ! *Ö-‰ˆàô 	ô # 6Ó*ˆ‹ñ .ô �¤% ¨4Ó0Ð0r%   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_Attributesi   r:   Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapr   N)r)   r*   r+   r,   Ú__annotations__r0   r   r%   r"   r‚   r‚      s   ‡ ØƒKØÓØ#Ö#r%   r‚   c                ó¤   • [        U 5      n U R                  S5      (       a  U R                  S5      (       a  U SS n U R                  [        5      $ )zÝ
Check whether *annot* is a typing.ClassVar.

The string comparison hack is used to avoid evaluating all string
annotations which would put attrs-based classes at a performance
disadvantage compared to plain old classes.
)Ú'Ú"r
   re   )ÚstrÚ
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots    r"   Ú_is_class_varr‘   &  sK   € ô �‹J€Eð ×Ñ˜
×#Ñ#¨¯©°z×(BÑ(BØ�a˜�ˆà×ÑÔ.Ó/Ð/r%   c                ó   • XR                   ;   $ )zJ
Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
)Ú__dict__)ÚclsÚattrib_names     r"   Ú_has_own_attributer–   7  s   € ð Ÿ,™,Ñ&Ð&r%   c                óÒ  • / n0 n[        U R                  SS 5       Hh  n[        US/ 5       HT  nUR                  (       d  UR                  U;   a  M&  UR                  SS9nUR                  U5        XCUR                  '   MV     Mj     / n[        5       n[        U5       HB  nUR                  U;   a  M  UR                  SU5        UR                  UR                  5        MD     Xc4$ )zI
Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
r
   re   Ú__attrs_attrs__T©Ú	inheritedr   )
ÚreversedÚ__mro__Úgetattrrš   ÚnameÚevolveÚappendÚsetÚinsertÚadd)r”   Útaken_attr_namesr…   Úbase_attr_mapÚbase_clsÚaÚfilteredÚseens           r"   Ú_collect_base_attrsrª   >  sÒ   € ð €JØ€Mô ˜SŸ[™[¨¨2Ð.Ö/ˆÜ˜Ð#4°bÖ9ˆAØ�{�{˜aŸf™fÐ(8Ó8Ùà—‘ 4�Ð(ˆAØ×Ñ˜aÔ Ø$,˜!Ÿ&™&Ó!ó :ñ 0ð €HÜ‹5€DÜ�jÖ!ˆØ�6‰6�T‹>ÙØ�‰˜˜1ÔØ�‰�—‘Öñ	 "ð Ð"Ð"r%   c                ó  • / n0 nU R                   SS  Hr  n[        US/ 5       H^  nUR                  U;   a  M  UR                  SS9nUR	                  UR                  5        UR                  U5        XCUR                  '   M`     Mt     X#4$ )a  
Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.

N.B. *taken_attr_names* will be mutated.

Adhere to the old incorrect behavior.

Notably it collects from the front and considers inherited attributes which
leads to the buggy behavior reported in #428.
r
   re   r˜   Tr™   )rœ   r�   rž   rŸ   r£   r    )r”   r¤   r…   r¥   r¦   r§   s         r"   Ú_collect_base_attrs_brokenr¬   _  s�   € ð €JØ€Mð —K‘K  "Ó%ˆÜ˜Ð#4°bÖ9ˆAØ�v‰vÐ)Ó)Ùà—‘ 4�Ð(ˆAØ× Ñ  §¡Ô(Ø×Ñ˜aÔ Ø$,˜!Ÿ&™&Ó!ó :ñ &ð Ð$Ð$r%   c                ó&  ^• U R                   m[        U 5      nUb  [        UR                  5       5      nGO$USL aÿ  TR                  5        VV	s1 s H  u  p‰U	R                  [
        L d  M  UiM     n
nn	/ n[        5       nUR                  5        Hn  u  pÍ[        U5      (       a  M  UR                  U5        TR                  U[        5      nUR                  [
        La  [        U5      nUR                  XÎ45        Mp     X«-
  nU(       a,  [        SSR                  [        UU4S jS95      -   S-   5      eO [        S TR                  5        5       S S9n[         R"                  n[$        R&                  R(                  nU VVs/ s H"  u  nnU" UUUULUR                  U5      5      PM$     nnnU(       a*  [+        U U Vs1 s H  oîR,                  iM     sn5      u  nnO)[/        U U Vs1 s H  oîR,                  iM     sn5      u  nnU[$        R&                  R0                  L a<  U Vs/ s H  oîR3                  SS	9PM     nnU Vs/ s H  oîR3                  SS	9PM     nnUU-   nU Ha  nUR4                  (       a  M  [6        R9                  U5      " S
[;        UR,                  5      5        [6        R9                  U5      " SS5        Mc     Ub  [=        U" U U5      5      nSnS U 5        HJ  nUSL a$  UR>                  [        L a  SU< 3n[A        U5      eUSL d  M3  UR>                  [        Ld  MH  SnML     U Ha  nUR4                  (       a  M  [6        R9                  U5      " S
[;        UR,                  5      5        [6        R9                  U5      " SS5        Mc     U Vs/ s H  oîR,                  PM     nn[C        U RD                  U5      n[G        U" U5      UU5      $ s  sn	nf s  snnf s  snf s  snf s  snf s  snf s  snf )a  
Transform all `_CountingAttr`s on a class into `Attribute`s.

If *these* is passed, use that and don't look for them on the class.

If *collect_by_mro* is True, collect them in the correct MRO order,
otherwise use the old -- incorrect -- order.  See #428.

Return an `_Attributes`.
Tz1The following `attr.ib`s lack a type annotation: ú, c                ó:   >• TR                  U 5      R                  $ r5   )ÚgetÚcounter)ÚnÚcds    €r"   Ú<lambda>Ú"_transform_attrs.<locals>.<lambda>©  s   ø€ °b·f±f¸Q³i×6GÒ6Gr%   )ÚkeyÚ.c              3  óV   #   • U  H  u  pUR                   [        L d  M  X4v •  M!     g 7fr5   )Ú	__class__rV   )Ú.0rž   Úattrs      r"   Ú	<genexpr>Ú#_transform_attrs.<locals>.<genexpr>¯  s)   é € ð â",‘J�DØ—>‘>¤]Ð2ó �•Ú",ùs   ‚)Ÿ
)c                ó    • U S   R                   $ ©Nr
   )r±   )Úes    r"   r´   rµ   ´  s   € ˜!˜A™$Ÿ,š,r%   )rE   rK   Úalias_is_defaultFc              3  óh   #   • U  H(  oR                   S Ld  M  UR                  S L d  M$  Uv •  M*     g7f)FN)rB   rE   ©rº   r§   s     r"   r¼   r½   ä  s(   é € ÐMš�A§&¡&°Ð"5‹a¸!¿)¹)ÀuÐ:L�a‰ašùs   ‚2˜2©	2zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: )$r“   r   rR   Úitemsr¹   rV   r¡   r‘   r£   r°   r   rY   r    r   ÚjoinÚsortedÚ	AttributeÚfrom_counting_attrÚ
ClassPropsÚKeywordOnlyÚNOrª   rž   r¬   ÚFORCErŸ   rK   Ú_OBJ_SETATTRÚ__get__Ú_default_init_alias_forrS   r=   rN   r€   r)   r‚   )r”   ÚtheseÚauto_attribsrE   Úcollect_by_mroÚfield_transformerÚannsÚca_listrž   r»   Úca_namesÚannot_namesr   r:   r§   ÚunannotatedÚfcaÚnoÚcaÚ	own_attrsr…   r¥   rƒ   Úhad_defaultrX   r|   Ú
AttrsClassr³   s                              @r"   Ú_transform_attrsrß   {  sÎ  ø€ ð$ 
�‰€BÜ˜CÓ €DàÑÜ�u—{‘{“}Ó%ŠØ	˜Ò	ð !Ÿh™hœjô
â(‘
�Ø�~‰~¤Ð.÷ Ù(ð 	ñ 
ð
 ˆÜ“eˆØ#Ÿz™zž|‰OˆIÜ˜T×"Ñ"ÙØ�O‰O˜IÔ&Ø—‘�y¤'Ó*ˆAà�{‰{¤-Ò/Ü˜1“I�Ø�N‰N˜I˜>Ö*ñ  ,ð Ñ,ˆÞÜ+ØCØ—)‘)Ü˜;Ô,GÑHóñð ñ	óð ð ô ñà"$§(¡(¤*óñ
 'ñ
ˆô ×
&Ñ
&€CÜ	×	Ñ	×	"Ñ	"€Bñ %ôò %‰MˆI�rñ 	ØØØ˜2ÐØ�H‰H�YÓö		
ñ %ð ñ ö Ü$7Ø¡)Ó,¢)˜Q—&”&¡)Ñ,ó%
Ñ!ˆ
‘Mô %?Ø¡)Ó,¢)˜Q—&”&¡)Ñ,ó%
Ñ!ˆ
�Mð ”*×(Ñ(×.Ñ.Ò.Ù5>Ó?²Y°—X‘X d�XÓ+±Yˆ	Ð?Ù6@ÓA²j°—h‘h t�hÓ,±jˆ
ÐAà˜Ñ"€Eó
 ˆØ�w�w‰wä× Ñ  Ô# GÔ-DÀQÇVÁVÓ-LÔMÜ× Ñ  Ô#Ð$6¸Ö=ñ	 ð Ñ$ÜÑ'¨¨UÓ3Ó4ˆð €KÙM™ÖMˆØ˜$Ò 1§9¡9´Ò#7ð Að  BCñ  AFð  GˆCÜ˜S“/Ð!à˜%Ô A§I¡I´WÔ$<ØŠKñ Nó ˆØ�w�w‰wÜ× Ñ  Ô# GÔ-DÀQÇVÁVÓ-LÔMÜ× Ñ  Ô#Ð$6¸Ö=ñ ñ #(Ó(¢%˜Q—&”&¡%€JÐ(Ü'¨¯©°jÓA€Jä‘z %Ó(¨*°mÓDÐDùóK
ùóLùò -ùò -ùò @ùÚAùòN )s0   ÁO.Á,O.Æ
)O4ÇO:
Ç1O?
È1PÉP	Î.Pc                óþ   • / SQnUb  UR                  S5        OUR                  / SQ5        UR                  SS/5        [        US5      nU [        R                  US.n[        SR                  U5      XES	U0S
9S   $ )N)	zdef wrapper(_cls):z    __class__ = _clsz‘    def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):z+         func = cached_properties.get(item)z         if func is not None:z!              result = func(self)z1              _setter = _cached_setattr_get(self)z#              _setter(item, result)z              return resultz,         return original_getattr(self, item))z         try:z2             return super().__getattribute__(item)z         except AttributeError:z4             if not hasattr(super(), '__getattr__'):z                 raisez-             return super().__getattr__(item)zY         original_error = f"'{self.__class__.__name__}' object has no attribute '{item}'"z-         raise AttributeError(original_error)z    return __getattr__z__getattr__ = wrapper(_cls)r�   )Úcached_propertiesÚ_cached_setattr_getÚoriginal_getattrÚ
Ú_cls)rm   Ú__getattr__)r    ÚextendÚ_generate_unique_filenamerÍ   rÎ   rr   rÅ   )rá   rã   r”   ÚlinesÚunique_filenameÚglobs         r"   Ú_make_cached_property_getattrrì   û  s�   € ò€Eð Ñ#Ø�‰Ø:õ	
ð 	�‰ò	ô	
ð 
‡L�Là$Ø)ð	
ôô 0°°YÓ?€Oð /Ü+×3Ñ3Ø,ñ€Dô "Ø�	‰	�%Ó˜/¸À¸ñàñð r%   c                ór   • [        U [        5      (       a  US;   a  [        R                  XU5        g[        e)z,
Attached to frozen classes as __setattr__.
)Ú	__cause__Ú__context__Ú__traceback__Ú__suppress_context__Ú	__notes__N)rQ   ÚBaseExceptionÚ__setattr__r   ©r!   rž   Úvalues      r"   Ú_frozen_setattrsr÷   /  s8   € ô �$œ×&Ñ&¨4ð 4ó ,ô 	×!Ñ! $¨eÔ4Øä
Ðr%   c                óp   • [        U [        5      (       a  US:X  a  [        R                  X5        g[        e)z,
Attached to frozen classes as __delattr__.
rò   N)rQ   ró   Ú__delattr__r   )r!   rž   s     r"   Ú_frozen_delattrsrú   @  s/   € ô �$œ×&Ñ&¨4°;Ó+>Ü×!Ñ! $Ô-Øä
Ðr%   c                 ó,  •  U u  nUR                  n[	        U5      nU HB  nUR
                  (       d  M  UR                  nUR                  nX�;  d  M5  [        X'5      X'   MD     U" S0 UD6$ ! [          a    S[        U 5       S3n[        U5      Sef = f)a³  
Create a new instance, based on the first positional argument with
*changes* applied.

.. tip::

   On Python 3.13 and later, you can also use `copy.replace` instead.

Args:

    inst:
        Instance of a class with *attrs* attributes. *inst* must be passed
        as a positional argument.

    changes:
        Keyword changes in the new copy.

Returns:
    A copy of inst with *changes* incorporated.

Raises:
    TypeError:
        If *attr_name* couldn't be found in the class ``__init__``.

    attrs.exceptions.NotAnAttrsClassError:
        If *cls* is not an *attrs* class.

.. versionadded:: 17.1.0
.. deprecated:: 23.1.0
   It is now deprecated to pass the instance using the keyword argument
   *inst*. It will raise a warning until at least April 2024, after which
   it will become an error. Always pass the instance as a positional
   argument.
.. versionchanged:: 24.1.0
   *inst* can't be passed as a keyword argument anymore.
z*evolve() takes 1 positional argument, but z were givenNr   )	rN   rh   rM   r¹   ÚfieldsrB   rž   rK   r�   )	ÚargsÚchangesÚinstrX   r”   rƒ   r§   r   Ú	init_names	            r"   rŸ   rŸ   K  sž   € ðJ'Ø‰ˆð �.‰.€CÜ�3‹K€EÛˆØ�v�vÙØ—F‘Fˆ	Ø—G‘Gˆ	ØÕ#Ü!(¨Ó!9ˆGÓñ ñ ‰>�‰>Ðøô! ó 'à8¼¸T»¸À;ÐOð 	ô ˜‹n $Ð&ð	'ús   ‚A- Á-&Bc                  ó´   • \ rS rSrSrSr        SS jrS rSS jrS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSS jrSS jrSrg)Ú_ClassBuilderi…  z 
Iteratively build *one* class.
)Ú_add_method_dundersÚ_attr_namesÚ_attrsÚ_base_attr_mapÚ_base_namesÚ_cache_hashrå   Ú	_cls_dictÚ_delete_attribsÚ_frozenÚ_has_custom_setattrÚ_has_post_initÚ_has_pre_initÚ_is_excÚ_on_setattrÚ_pre_init_has_argsÚ_repr_addedÚ_script_snippetsÚ_slotsÚ_weakref_slotÚ_wrote_own_setattrc                ó–  • [        UUUUR                  UR                  UR                  5      u  pgnXl        UR
                  (       a  [        UR                  5      O0 U l        X`l	        U V	s1 s H  o™R                  iM     sn	U l        X€l        [        S U 5       5      U l        UR
                  U l        UR                   U l        UR$                  U l        UR(                  [*        R,                  R.                  L U l        [3        [5        USS5      5      U l        SU l        U R6                  (       a?  UR:                  n
[<        R>                  " U
5      n[A        URB                  5      S:„  U l        [3        [5        USS5      5      U l"        [3        U5      (       + U l#        URH                  U l%        URL                  U l'        XPl(        SU l)        U R                  U R                  S'   X@R                  S'   UR                   (       a.  [T        U R                  S'   [V        U R                  S	'   S
U l)        OâU RN                  [X        [Z        R\                  [Z        R^                  4;   a¯  S=pÍU H3  n	U	R`                  b  S
nU	Rb                  b  S
nU(       d  M*  U(       d  M3    O   U RN                  [X        :X  a  U(       d  U(       aJ  U RN                  [Z        R\                  :X  a  U(       a%  U RN                  [Z        R^                  :X  a  U(       d  S U l'        URd                  (       a-  U Rg                  5       u  U R                  S'   U R                  S'   / U l4        SU l5        [m        U R                  S5      (       a  [m        U R                  S5      (       d  U Rn                  U l8        g U Rr                  U l8        g s  sn	f )Nc              3  ó8   #   • U  H  oR                   v •  M     g 7fr5   ©rž   rÃ   s     r"   r¼   Ú)_ClassBuilder.__init__.<locals>.<genexpr>¸  s   é € Ð 7²¨A§¦²ùs   ‚Ú__attrs_pre_init__Fr
   Ú__attrs_post_init__r˜   Ú__attrs_props__rô   rù   TÚ__getstate__Ú__setstate__r*   r+   ):rß   rE   Úcollected_fields_by_mrorÓ   rå   Ú
is_slottedÚdictr“   r	  r  rž   r  r  rS   r  r  Ú	is_frozenr  Úhas_weakref_slotr  ÚhashabilityrÉ   ÚHashabilityÚHASHABLE_CACHEDr  Úboolr�   r  r  r  ÚinspectÚ	signaturerh   Ú
parametersr  r
  Úis_exceptionr  Úon_setattr_hookr  r  r  r÷   rú   Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr>   rC   Úadded_picklingÚ_make_getstate_setstater  r  ÚhasattrÚ_add_method_dunders_safer  Ú_add_method_dunders_unsafe)r!   r”   rÐ   rÑ   ÚpropsÚhas_custom_setattrrƒ   r…   Úbase_mapr§   Úpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converters                 r"   Ú__init__Ú_ClassBuilder.__init__¢  s  € ô '7ØØØØ�M‰MØ×)Ñ)Ø×#Ñ#ó'
Ñ#ˆ˜8ð Œ	Ø/4×/?×/?œ˜cŸl™lÔ+ÀRˆŒØŒÙ,6Ó7ªJ qŸFœF©JÑ7ˆÔØ&ÔÜ Ñ 7±Ó 7Ó7ˆÔØ×&Ñ&ˆŒØ—‘ˆŒØ"×3Ñ3ˆÔà×Ñ¤×!7Ñ!7×!GÑ!GÐGð 	Ôô "¤'¨#Ð/CÀUÓ"KÓLˆÔØ"'ˆÔØ××ð  ×2Ñ2ˆMÜ!(×!2Ò!2°=Ó!AÐÜ&)Ð*<×*GÑ*GÓ&HÈ1Ñ&LˆDÔ#Ü"¤7¨3Ð0EÀuÓ#MÓNˆÔÜ#'¨£;œˆÔØ×)Ñ)ˆŒØ ×0Ñ0ˆÔà#5Ô Ø"'ˆÔà,0¯K©Kˆ�‰Ð(Ñ)Ø,1�‰Ð(Ñ)à�?�?Ü,<ˆD�N‰N˜=Ñ)Ü,<ˆD�N‰N˜=Ñ)à&*ˆDÕ#Ø×ÑÜÜ×ÑÜ�O‰Oð"
ó 
ð
 -2Ð1ˆMÛ�Ø—;‘;Ñ*Ø$(�MØ—;‘;Ñ*Ø$(�Mç �=§] ]Ùñ ð ×$Ñ$Ô(;Ó;Þ*®mà×$Ñ$¬×(8Ñ(8Ó8ÆØ×$Ñ$¬¯©Ó7Æð
 $(�Ô à××ð ×,Ñ,Ó.ñØ—‘˜~Ñ.Ø—‘˜~Ñ.ð ð 	Ôð !ˆÔô �t—y‘y ,×/Ñ/´wØ�I‰I�~÷8
ñ 8
ð (,×'DÑ'DˆDÕ$à'+×'FÑ'FˆDÕ$ùò_ 8s   Á/Oc                ó6   • SU R                   R                   S3$ )Nz<_ClassBuilder(cls=z)>)rå   r)   r    s    r"   r#   Ú_ClassBuilder.__repr__  s   € Ø$ T§Y¡Y×%7Ñ%7Ð$8¸Ð;Ð;r%   c                óP  • SR                  U R                   Vs/ s H  oS   PM	     sn5      n0 nU R                   H  u  pEnUR                  U5        M     [        U[	        U R
                  S5      U5      nU R                   H  u    pGU" U R                  U5        M     gs  snf )z-
Evaluate any registered snippets in one go.
rä   r   ÚmethodsN)rÅ   r  Úupdaterr   rè   rå   r	  )r!   Úsnippetr^   r_   Ú_Úsnippet_globsr`   Úhooks           r"   Ú_eval_snippetsÚ_ClassBuilder._eval_snippets
  s›   € ð —‘°d×6KÒ6KÓLÒ6K¨7 AœJÑ6KÑLÓMˆØˆØ#'×#8Ô#8ÑˆA˜aØ�L‰L˜Ö'ñ $9ô &ØÜ% d§i¡i°Ó;Øó
ˆð ×/Ô/‰JˆAˆqÙ�—‘ Ö&ò 0ùò Ms   šB#c                óv  • U R                  5         U R                  SL a6  U R                  5       n[        R                  " U5      U R
                  l        O1U R                  5       n[        (       a  [        R                  " U5      n[        USS5      (       a   SUR                  ;  a  UR                  5         U$ )zk
Finalize class based on the accumulated configuration.

Builder cannot be used after calling this method.
TÚ__attrs_init_subclass__N)rH  r  Ú_create_slots_classÚweakrefÚrefrå   Ú__attrs_base_of_slotted__Ú_patch_original_classr   ÚabcÚupdate_abstractmethodsr�   r“   rK  )r!   r”   s     r"   Úbuild_classÚ_ClassBuilder.build_class  s‘   € ð 	×ÑÔØ�;‰;˜$ÒØ×*Ñ*Ó,ˆCÜ29·+²+¸cÓ2BˆD�I‰IÕ/à×,Ñ,Ó.ˆCßŠ|Ü×0Ò0°Ó5�ô
 �CÐ2°D×9Ñ9Ø)°·±Ó=à×'Ñ'Ô)àˆ
r%   c                ó(  • U R                   nU R                  nU R                  (       aa  U R                   HQ  nX2;  d  M
  [	        X[
        5      [
        Ld  M#  [        R                  " [        5         [        X5        SSS5        MS     U R                  R                  5        H  u  p4[        XU5        M     U R                  (       d5  [	        USS5      (       a#  SUl        U R                  (       d  [         Ul        U$ ! , (       d  f       MÛ  = f)z1
Apply accumulated methods and return the class.
NÚ__attrs_own_setattr__F)rå   r  r
  r  r�   Ú	_SENTINELÚ
contextlibÚsuppressÚAttributeErrorÚdelattrr	  rÄ   Úsetattrr  rV  r  rÍ   rô   )r!   r”   Ú
base_namesrž   rö   s        r"   rP  Ú#_ClassBuilder._patch_original_class5  sÔ   € ð �i‰iˆØ×%Ñ%ˆ
ð ××Ø×(Ô(�àÕ*Ü ¬9Ó5¼YÔFô
 $×,Ò,¬^Õ<Ü Ô*÷ =Ñ<ñ )ð  Ÿ>™>×/Ñ/Ö1‰KˆDÜ�C˜uÖ%ñ 2ð
 ×&×&¬7ØÐ(¨%÷,
ñ ,
ð ).ˆCÔ%à×+×+Ü".�”àˆ
÷# =Ö<ús   Á3DÄ
D	c                óô	  • U R                   R                  5        VVs0 s H)  u  pU/ [        U R                  5      QSPSP7;  d  M'  X_M+     nnn[	        [
        S5      (       a   [
        R                  " U R                  5        U R                  (       d_  SUS'   U R                  (       dI  U R                  R                   H/  nUR                  R                  SS5      (       d  M&  [        US'     O   0 nSnU R                  R                  SS  HY  nUR                  R                  SS	5      b  S
nUR                  [!        US/ 5       Vs0 s H  nU[!        XG5      _M     sn5        M[     [#        U R$                  5      nU R                  n	U R&                  (       a-  S[!        U R                  SS5      ;  a  SU	;  a  U(       d  U	S-  n	UR                  5        VV
s0 s H(  u  pz[)        U
[*        5      (       d  M  XzR,                  _M*     nnn
/ nU(       aÈ  [/        U R                  5      nUR                  5        H`  u  p~X—4-  n	X7	 UR1                  U5        [2        R4                  " U5      R6                  nU[2        R8                  R:                  Ld  M\  XýU'   Mb     UR                  S5      nUb  UR1                  U5        [=        UUU R                  5      US'   U	 Vs/ s H  owU;  d  M
  UPM     nnUR                  5        VVs0 s H  u  nnUU;   d  M  UU_M     nnnU Vs/ s H  owU;  d  M
  UPM     nnUR                  U5        U R>                  (       a  UR1                  [@        5        [        U5      US'   U R                  RB                  US'   [E        U R                  5      " U R                  RF                  U R                  R                  U5      n[H        RJ                  " UR                  RM                  5       U5       H«  n[)        U[N        [P        45      (       a  [!        URR                  SS	5      nO:[)        U[T        5      (       a  [!        URV                  SS	5      nO[!        USS	5      nU(       d  My  U H,  n URX                  U R                  L nU(       a	  UUl,        M,  M.     M­     U$ s  snnf s  snf s  sn
nf s  snf s  snnf s  snf ! [Z         a     Md  f = f)z<
Build and return a new class with a `__slots__` attribute.
r“   Ú__weakref__Ú_clear_type_descriptorsFrV  rô   r
   re   NTÚ	__slots__r   )r`  ræ   r+   Ú__closure__).r	  rÄ   rS   r  r3  Úsysra  rå   r  r  Ú	__bases__r“   r°   rÍ   rœ   rC  r�   r¡   r  r  rQ   r   Úfuncr   r    r)  r*  Úreturn_annotationÚ	ParameterÚemptyrì   r  Ú_HASH_CACHE_FIELDr+   r:   r)   Ú	itertoolsÚchainÚvaluesÚclassmethodÚstaticmethodÚ__func__rz   ÚfgetÚcell_contentsrN   )r!   ÚkÚvr³   r¦   Úexisting_slotsÚweakref_inheritedrž   r]  ÚnamesÚcached_proprá   Ú&additional_closure_functions_to_updateÚclass_annotationsrf  Ú
annotationrã   Ú
slot_namesÚslotÚslot_descriptorÚreused_slotsr”   ÚitemÚclosure_cellsÚcellÚmatchs                             r"   rL  Ú!_ClassBuilder._create_slots_classY  sŠ  € ð Ÿ™×,Ñ,Ô.ô
â.‘�ØÐMœ% × 0Ñ 0Ó1ÐM°:ÐM¸}ÑMÑMó ˆAŠDÙ.ð 	ñ 
ô ”3Ð1×2Ñ2Ü×'Ò'¨¯	©	Ô2ð ×&×&Ø*/ˆBÐ&Ñ'à×+×+Ø $§	¡	× 3Ô 3�HØ×(Ñ(×,Ñ,Ð-DÀe×LÓLÜ,8˜˜=Ñ)Ùñ !4ð ˆØ!ÐØŸ	™	×)Ñ)¨!¨BÓ/ˆHØ× Ñ ×$Ñ$ ]°DÓ9ÑEØ$(Ð!Ø×!Ñ!ô !(¨°+¸rÔ Bóâ B˜ð œ' (Ó1Ò1Ù Bñöñ 0ô ˜×)Ñ)Ó*ˆ
à× Ñ ˆà××Ø¤W¨T¯Y©Y¸ÀRÓ%HÓHØ UÓ*Þ%àÐ%Ñ%ˆEð &(§X¡X¤Zô
â%/Ñ!�Ü˜+¤×7ó #ˆD×"Ñ"Ò"Ù%/ð 	ñ 
ð 24Ð.ÞÜ 0°·±Ó ;ÐØ/×5Ñ5Ö7‘
�à˜Ñ �à�HØ6×=Ñ=¸dÔCÜ$×.Ò.¨tÓ4×FÑF�
Ø¤W×%6Ñ%6×%<Ñ%<Ô<Ø.8 dÓ+ñ 8ð  "Ÿv™v mÓ4ÐØÑ+Ø6×=Ñ=Ð>NÔOä =Ø!Ð#3°T·Y±Yó!ˆBˆ}Ññ (-ÓG¢u˜t¸JÑ0F—d¡uˆ
ÐGð *8×)=Ñ)=Ô)?ô
â)?Ñ%��oØ�zÑ!ó "ˆD�/Ò!Ù)?ð 	ñ 
ñ
 (2ÓN¢z˜tÀÑ5M—d¡zˆ
ÐNØ
�	‰	�,ÔØ××Ø×ÑÔ/Ô0ä 
Ó+ˆˆ;‰à!ŸY™Y×3Ñ3ˆˆ>Ñô �4—9‘9Œo˜dŸi™i×0Ñ0°$·)±)×2EÑ2EÀrÓJˆô —O’OØ�L‰L×ÑÓ!Ð#Iö
ˆDô ˜$¤¬lÐ ;×<Ñ<ô !(¨¯©°}ÀdÓ K‘Ü˜D¤(×+Ñ+ô !(¨¯	©	°=À$Ó G‘ä '¨¨m¸TÓ B�æ ÙÛ%�ð1Ø ×.Ñ.°$·)±)Ð;�Eö
 Ø-0˜Ö*ñ ó &ñ!
ð2 ˆ
ùóS
ùòFùó"
ùò> Hùó
ùò
 OøôJ "ó âðúsS   ž&SÁSÅS
Ç"SÈSË)	SË6SÌSÌ"SÌ0	S$Ì=S$ÒS)Ó)
S7Ó6S7c                óŒ   ^ • [        T R                  U5      u  p#U 4S jnT R                  R                  X#U45        ST l        T $ )Nc                ó4   >• TR                  US   5      U S'   g )Nr#   ©r  ©Úcls_dictr_   r!   s     €r"   Ú_attach_reprÚ,_ClassBuilder.add_repr.<locals>._attach_reprë  s   ø€ Ø#'×#;Ñ#;¸EÀ*Ñ<MÓ#NˆH�ZÒ r%   T)Ú_make_repr_scriptr  r  r    r  )r!   Únsr^   r_   rŠ  s   `    r"   Úadd_reprÚ_ClassBuilder.add_reprè  sC   ø€ Ü)¨$¯+©+°rÓ:‰ˆõ	Oð 	×Ñ×$Ñ$ f°\Ð%BÔCØˆÔØˆr%   c                ó„   • U R                   (       d  Sn[        U5      eS nU R                  U5      U R                  S'   U $ )Nz3__str__ can only be generated if a __repr__ exists.c                ó"   • U R                  5       $ r5   ©r#   r    s    r"   Ú__str__Ú&_ClassBuilder.add_str.<locals>.__str__÷  s   € Ø—=‘=“?Ð"r%   r“  )r  rN   r  r	  )r!   rX   r“  s      r"   Úadd_strÚ_ClassBuilder.add_strò  s?   € Ø××ØGˆCÜ˜S“/Ð!ò	#ð %)×$<Ñ$<¸WÓ$Eˆ�‰�yÑ!Øˆr%   c                óv   ^^• [        S U R                   5       5      mU4S jnU R                  mUU4S jnX4$ )z6
Create custom __setstate__ and __getstate__ methods.
c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7f)r`  Nr   )rº   Úans     r"   r¼   Ú8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>  s   é € ð !
Ú)�2°=Ñ-@�B‰BÒ)ùs   ‚	�	c                óF   >• T Vs0 s H  o[        X5      _M     sn$ s  snf ©ú!
Automatically created by attrs.
©r�   )r!   rž   Ústate_attr_namess     €r"   Úslots_getstateÚ=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate  s(   ø€ ñ ;KÓKÒ:J°$œ' $Ó-Ò-Ñ:JÑKÐKùÒKs   †c                óö   >• [         R                  U 5      n[        U[        5      (       a  [	        TU5       H  u  p4U" X45        M     OT H  nX1;   d  M
  U" X1U   5        M     T(       a  U" [
        S5        gg)r�  N)rÍ   rÎ   rQ   rS   Úziprj  )r!   ÚstateÚ_ClassBuilder__bound_setattrrž   rö   Úhash_caching_enabledrŸ  s        €€r"   Úslots_setstateÚ=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate  ss   ø€ ô +×2Ñ2°4Ó8ˆOÜ˜%¤×'Ñ'ô $'Ð'7¸Ö#?‘K�DÙ# DÖ0ò $@ó -�DØ•}Ù'¨°D©kÖ:ñ -ö $ÙÔ 1°4Õ8ð $r%   )rS   r  r  )r!   r   r§  r¦  rŸ  s      @@r"   r2  Ú%_ClassBuilder._make_getstate_setstateý  sG   ù€ ô
 !ñ !
Ø×)Ò)ó!
ó 
Ðõ	Lð  $×/Ñ/Ðö	9ð, Ð-Ð-r%   c                ó$   • S U R                   S'   U $ ©NÚ__hash__)r	  r    s    r"   Úmake_unhashableÚ_ClassBuilder.make_unhashable&  s   € Ø%)ˆ�‰�zÑ"Øˆr%   c                ó¾   ^ • [        T R                  T R                  T R                  T R                  S9u  pSU 4S jjnT R
                  R                  XU45        T $ )N©ÚfrozenÚ
cache_hashc                ó4   >• TR                  US   5      U S'   g r«  r‡  )r‰  r`   r!   s     €r"   Úattach_hashÚ+_ClassBuilder.add_hash.<locals>.attach_hash2  s   ø€ Ø#'×#;Ñ#;¸DÀÑ<LÓ#MˆH�ZÒ r%   )r‰  r"  r`   r"  ÚreturnÚNone)Ú_make_hash_scriptrå   r  r  r  r  r    )r!   r^   r_   r´  s   `   r"   Úadd_hashÚ_ClassBuilder.add_hash*  sS   ø€ Ü)Ø�I‰IØ�K‰KØ—<‘<Ø×'Ñ'ñ	
‰ˆ÷	Nð 	×Ñ×$Ñ$ f°[Ð%AÔBàˆr%   c                ó\  ^ ^• [        T R                  T R                  T R                  T R                  T R
                  T R                  T R                  T R                  T R                  T R                  T R                  SS9u  pmUU 4S jnT R                  R                  XU45        T $ )NF©Ú
attrs_initc                óF   >• US   nTUl         TR                  U5      U S'   g )Nr=  ©rˆ   r  ©r‰  r_   rB   r   r!   s      €€r"   Ú_attach_initÚ,_ClassBuilder.add_init.<locals>._attach_initI  s*   ø€ Ø˜Ñ$ˆDØ#.ˆDÔ Ø#'×#;Ñ#;¸DÓ#AˆH�ZÒ r%   ©Ú_make_init_scriptrå   r  r  r  r  r  r  r  r  r  r  r  r    )r!   r^   r_   rÁ  r   s   `   @r"   Úadd_initÚ_ClassBuilder.add_init9  s”   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØñ&
Ñ"ˆ�{ö	Bð
 	×Ñ×$Ñ$ f°\Ð%BÔCàˆr%   c                óJ   • U R                  [        5      U R                  S'   U $ )NÚ__replace__)r  rŸ   r	  r    s    r"   Úadd_replaceÚ_ClassBuilder.add_replaceR  s    € Ø(,×(@Ñ(@ÄÓ(Hˆ�‰�}Ñ%Øˆr%   c                óV   • [        S U R                   5       5      U R                  S'   g )Nc              3  ó†   #   • U  H7  nUR                   (       d  M  UR                  (       a  M)  UR                  v •  M9     g 7fr5   )rB   rE   rž   )rº   Úfields     r"   r¼   Ú/_ClassBuilder.add_match_args.<locals>.<genexpr>W  s0   é € ð 1
â$�Ø�z�zó à"'§-¥-ó ˆE�JŽJÚ$ùs   ‚A›A®AÚ__match_args__)rS   r  r	  r    s    r"   Úadd_match_argsÚ_ClassBuilder.add_match_argsV  s'   € Ü+0ñ 1
àŸšó1
ó ,
ˆ�‰Ð'Ò(r%   c                ó\  ^ ^• [        T R                  T R                  T R                  T R                  T R
                  T R                  T R                  T R                  T R                  T R                  T R                  SS9u  pmUU 4S jnT R                  R                  XU45        T $ )NTr¼  c                óF   >• US   nTUl         TR                  U5      U S'   g )NÚ__attrs_init__r¿  rÀ  s      €€r"   Ú_attach_attrs_initÚ8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initm  s,   ø€ ØÐ)Ñ*ˆDØ#.ˆDÔ Ø)-×)AÑ)AÀ$Ó)GˆHÐ%Ò&r%   rÃ  )r!   r^   r_   rÕ  r   s   `   @r"   Úadd_attrs_initÚ_ClassBuilder.add_attrs_init]  s•   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØñ&
Ñ"ˆ�{ö	Hð
 	×Ñ×$Ñ$ fÐ5GÐ%HÔIàˆr%   c                ó¦   ^ • T R                   n[        T R                  5      u  p#U 4S jnT R                  R	                  X#U45        [
        US'   T $ )Nc                ó4   >• TR                  US   5      U S'   g )NÚ__eq__r‡  rˆ  s     €r"   Ú
_attach_eqÚ(_ClassBuilder.add_eq.<locals>._attach_eq{  s   ø€ Ø!%×!9Ñ!9¸%À¹/Ó!JˆH�XÒr%   Ú__ne__)r	  Ú_make_eq_scriptr  r  r    rÞ  )r!   r³   r^   r_   rÜ  s   `    r"   Úadd_eqÚ_ClassBuilder.add_eqv  sK   ø€ Ø�^‰^ˆä'¨¯©Ó4‰ˆõ	Kð 	×Ñ×$Ñ$ f°ZÐ%@ÔAäˆˆ8‰àˆr%   c                ó–   ^ • T R                   nU 4S j[        T R                  T R                  5       5       u  US'   US'   US'   US'   T $ )Nc              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7fr5   r‡  )rº   Úmethr!   s     €r"   r¼   Ú*_ClassBuilder.add_order.<locals>.<genexpr>‡  s'   øé € ð B
â;�ð ×$Ñ$ T×*Ð*Ú;ùs   ƒ!Ú__lt__Ú__le__Ú__gt__Ú__ge__)r	  Ú_make_orderrå   r  )r!   r³   s   ` r"   Ú	add_orderÚ_ClassBuilder.add_order„  sL   ø€ Ø�^‰^ˆôB
ä# D§I¡I¨t¯{©{Ô;óB
Ñ>ˆˆ8‰�b˜‘l B x¡L°"°X±,ð
 ˆr%   c                óŽ  ^• 0 mU R                    HP  nUR                  =(       d    U R                  nU(       d  M+  U[        R                  Ld  M@  X4TUR
                  '   MR     T(       d  U $ U R                  (       a  Sn[        U5      eU4S jnSU R                  S'   U R                  U5      U R                  S'   SU l
        U $ )Nz7Can't combine custom __setattr__ with on_setattr hooks.c                ód   >•  TU   u  p4U" XU5      n[        XU5        g ! [          a    Un Nf = fr5   )ÚKeyErrorrÍ   )r!   rž   Úvalr§   rG  ÚnvalÚsa_attrss         €r"   rô   Ú._ClassBuilder.add_setattr.<locals>.__setattr__ž  sA   ø€ ð*Ø" 4™.‘�ñ ˜D SÓ)�ä˜ TÕ*øô ó Ø’ðús   ƒ   /®/TrV  rô   )r  rJ   r  r   ÚNO_OPrž   r  rN   r	  r  r  )r!   r§   rJ   rX   rô   rò  s        @r"   Úadd_setattrÚ_ClassBuilder.add_setattrŽ  s¨   ø€ ØˆØ—”ˆAØŸ™×9¨×)9Ñ)9ˆJßˆz˜j´·±Ô=Ø#$ =�˜Ÿ™Ó ñ ö
 ØˆKà×#×#àKˆCÜ˜S“/Ð!õ	+ð 37ˆ�‰Ð.Ñ/Ø(,×(@Ñ(@ÀÓ(Mˆ�‰�}Ñ%Ø"&ˆÔàˆr%   c                óÎ   • U R                   R                  Ul        U R                   R                   SUR                   3Ul        SU R                   R                   S3Ul        U$ )z0
Add __module__ and __qualname__ to a *method*.
r·   ú$Method generated by attrs for class )rå   r*   r+   r)   r-   ©r!   Úmethods     r"   r5  Ú(_ClassBuilder._add_method_dunders_unsafe®  s`   € ð !ŸI™I×0Ñ0ˆÔà!%§¡×!7Ñ!7Ð 8¸¸&¿/¹/Ð9JÐKˆÔð 3°4·9±9×3IÑ3IÐ2JÈ!ÐLð 	Œð ˆr%   c                ó  • [         R                  " [        5         U R                  R                  Ul        SSS5        [         R                  " [        5         U R                  R
                   SUR                   3Ul        SSS5        [         R                  " [        5         SU R                  R
                   S3Ul        SSS5        U$ ! , (       d  f       NŸ= f! , (       d  f       Nc= f! , (       d  f       U$ = f)z<
Add __module__ and __qualname__ to a *method* if possible.
Nr·   rø  )rX  rY  rZ  rå   r*   r+   r)   r-   rù  s     r"   r4  Ú&_ClassBuilder._add_method_dunders_safe¼  s»   € ô × Ò ¤Õ0Ø $§	¡	× 4Ñ 4ˆFÔ÷ 1ô × Ò ¤Õ0Ø%)§Y¡Y×%;Ñ%;Ð$<¸A¸f¿o¹oÐ=NÐ"OˆFÔ÷ 1ô × Ò ¤Õ0ØCÀDÇIÁI×DZÑDZÐC[Ð[\Ð]ˆFŒN÷ 1ð ˆ÷ 1Õ0ú÷ 1Õ0ú÷ 1Ô0ð ˆús#   ›CÁ+C!Â& C2Ã
CÃ!
C/Ã2
DN)r”   r:   rÑ   r(  r6  rÉ   r7  r(  )r¶  r·  )rú  r   r¶  r   )r)   r*   r+   r,   r-   rb  r=  r#   rH  rS  rP  rL  rŽ  r•  r2  r­  r¹  rÅ  rÉ  rÐ  r×  rà  rë  rõ  r5  r4  r0   r   r%   r"   r  r  …  s¨   † ñð€Ið0cGàðcGð ð	cGð
 ðcGð !ôcGòJ<ô'ò$ò2"òHMò^ò	ò'.òRòòò2ò
òò2òòô@÷r%   r  c                ó¢   • U b#  [        USLUSL45      (       a  Sn[        U5      eU b  X 4$ Uc  UnUc  UnUSL a  USL a  Sn[        U5      eX4$ )úŽ
Validate the combination of *cmp*, *eq*, and *order*. Derive the effective
values of eq and order.  If *eq* is None, set it to *default_eq*.
Nú&Don't mix `cmp` with `eq' and `order`.FTú-`order` can only be True if `eq` is True too.©ÚanyrN   )r@   rF   rH   Ú
default_eqrX   s        r"   Ú_determine_attrs_eq_orderr  Ì  sx   € ð
 �œ3 ¨$ °¸TÐ0AÐB×CÑCØ6ˆÜ˜‹oÐð �Øˆxˆð 
�zØˆà�}Øˆà	ˆU‚{�u ’}Ø=ˆÜ˜‹oÐàˆ9Ðr%   c                óî   • U b#  [        USLUSL45      (       a  Sn[        U5      eS nU b  U" U 5      u  pXX4$ Uc  USpqO
U" U5      u  pUc  Xp‚O
U" U5      u  p(USL a  USL a  Sn[        U5      eXX(4$ )rÿ  Nr   c                ó8   • [        U 5      (       a  SU pX4$ SnX4$ )z(
Decide whether a key function is used.
TN)rO   )rö   r¶   s     r"   Údecide_callable_or_booleanÚ>_determine_attrib_eq_order.<locals>.decide_callable_or_booleanñ  s-   € ô �E�?‰?Ø˜u�3ð ˆzÐð ˆCØˆzÐr%   FTr  r  )	r@   rF   rH   r  rX   r  Úcmp_keyrG   rI   s	            r"   rL   rL   è  s«   € ð
 �œ3 ¨$ °¸TÐ0AÐB×CÑCØ6ˆÜ˜‹oÐòð �Ù1°#Ó6‰ˆØ˜SÐ)Ð)ð 
�zØ ‰Fá/°Ó3‰
ˆà�}Ø‰yá5°eÓ<Ñˆà	ˆU‚{�u ’}Ø=ˆÜ˜‹oÐà�uÐ'Ð'r%   c                óh   • USL d  USL a  U$ Uc  USL a  U$ U H  n[        X5      (       d  M    g   U$ )aX  
Check whether we should implement a set of methods for *cls*.

*flag* is the argument passed into @attr.s like 'init', *auto_detect* the
same as passed into @attr.s and *dunders* is a tuple of attribute names
whose presence signal that the user has implemented it themselves.

Return *default* if no reason for either for or against is found.
TF)r–   )r”   ÚflagÚauto_detectÚdundersr=   Údunders         r"   Ú_determine_whether_to_implementr    sH   € ð ˆt‚|�t˜u’}Øˆà�|˜ uÒ,Øˆó ˆÜ˜c×*Ó*Ùñ ð €Nr%   Fc                óD  ^^^^^^^^	^
^^^^^^^^^^^^^• Tb  SSK nUR                  [        S5      SS9  [        XOUS5      u  mmUb  Um[	        T[
        [        45      (       a  [        R                  " T6 mUUUUUUUUUUUUUUUUUUUU
UU	4S jnU c  U$ U" U 5      $ )aÐ  
A class decorator that adds :term:`dunder methods` according to the
specified attributes using `attr.ib` or the *these* argument.

Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will
*never* go away, though).

Args:
    repr_ns (str):
        When using nested classes, there was no way in Python 2 to
        automatically detect that.  This argument allows to set a custom
        name for a more meaningful ``repr`` output.  This argument is
        pointless in Python 3 and is therefore deprecated.

.. caution::
    Refer to `attrs.define` for the rest of the parameters, but note that they
    can have different defaults.

    Notably, leaving *on_setattr* as `None` will **not** add any hooks.

.. versionadded:: 16.0.0 *slots*
.. versionadded:: 16.1.0 *frozen*
.. versionadded:: 16.3.0 *str*
.. versionadded:: 16.3.0 Support for ``__attrs_post_init__``.
.. versionchanged:: 17.1.0
   *hash* supports `None` as value which is also the default now.
.. versionadded:: 17.3.0 *auto_attribs*
.. versionchanged:: 18.1.0
   If *these* is passed, no attributes are deleted from the class body.
.. versionchanged:: 18.1.0 If *these* is ordered, the order is retained.
.. versionadded:: 18.2.0 *weakref_slot*
.. deprecated:: 18.2.0
   ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a
   `DeprecationWarning` if the classes compared are subclasses of
   each other. ``__eq`` and ``__ne__`` never tried to compared subclasses
   to each other.
.. versionchanged:: 19.2.0
   ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider
   subclasses comparable anymore.
.. versionadded:: 18.2.0 *kw_only*
.. versionadded:: 18.2.0 *cache_hash*
.. versionadded:: 19.1.0 *auto_exc*
.. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
.. versionadded:: 19.2.0 *eq* and *order*
.. versionadded:: 20.1.0 *auto_detect*
.. versionadded:: 20.1.0 *collect_by_mro*
.. versionadded:: 20.1.0 *getstate_setstate*
.. versionadded:: 20.1.0 *on_setattr*
.. versionadded:: 20.3.0 *field_transformer*
.. versionchanged:: 21.1.0
   ``init=False`` injects ``__attrs_init__``
.. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__``
.. versionchanged:: 21.1.0 *cmp* undeprecated
.. versionadded:: 21.3.0 *match_args*
.. versionadded:: 22.2.0
   *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance).
.. deprecated:: 24.1.0 *repr_ns*
.. versionchanged:: 24.1.0
   Instances are not compared as tuples of attributes anymore, but using a
   big ``and`` condition. This is faster and has more correct behavior for
   uncomparable values like `math.nan`.
.. versionadded:: 24.1.0
   If a class has an *inherited* classmethod called
   ``__attrs_init_subclass__``, it is executed after the class is created.
.. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*.
.. versionchanged:: 25.4.0
   *kw_only* now only applies to attributes defined in the current class,
   and respects attribute-level ``kw_only=False`` settings.
.. versionadded:: 25.4.0 *force_kw_only*
Nr   zQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.é   )Ú
stacklevelc                ó¶  >• T=(       d    [        U 5      nTSL =(       a    [        U [        5      nT=(       a    [        U S5      nU(       a  U(       a  Sn[	        U5      eU(       + =(       a    [        U TTS5      n[        R                  nU(       a  UR                  nO³TSL a   T(       a  UR                  OUR                  nOŽTSL a  UR                  nO|Tcl  TSL a  [        U S5      (       a  UR                  nOVUSL a%  USL a   T(       a  UR                  OUR                  nO,USL a  UR                  nOUR                  nOSn[        U5      e[        R                  nT(       a   T(       a  UR                  OUR                  n	OUR                   n	[        S"0 SU_S	U_S
T_ST_S[        U TTS5      _S[        U TTS5      _SU_SU(       + =(       a    [        U TTS5      _SU_ST_SU	_ST!_ST_S[        U TTSTS9_ST_ST_6n
U
R"                  (       d  T(       a  Sn[        U5      e[%        U T TU
US9nU
R&                  (       a  UR)                  T5        U
R*                  (       a  UR-                  5         U
R.                  (       a  UR1                  5         U
R2                  (       a  UR5                  5         T(       d  UR7                  5         U
R"                  (       a  UR9                  5         O)U
R:                  UR                  L a  UR=                  5         U
R>                  (       a  URA                  5         O$URC                  5         T(       a  Sn[        U5      e[D        (       a!  [        U S 5      (       d  URG                  5         [H        (       a(  T(       a!  [        U S!5      (       d  URK                  5         URM                  5       $ )#NTrô   z/Can't freeze a class with a custom __setattr__.)rÛ  rÞ  Fr¬  r<   r,  r#  r!  r   Ú
added_init©r=  Ú
added_reprr’  Úadded_eqÚadded_ordering)ræ  rç  rè  ré  r%  Úadded_match_argsrE   r$  Ú	added_strr1  )r  r  )r=   r-  rÓ   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.)rÑ   r6  r7  zFInvalid value for cache_hash.  To use hash caching, init must be True.rÈ  rÏ  r   )'Ú_has_frozen_base_classÚ
issubclassró   r–   rN   r  rÉ   r&  ÚLEAVE_ALONEr'  ÚHASHABLEÚ
UNHASHABLErM   rÊ   rÌ   ÚYESrË   Úis_hashabler  r  rŽ  r  r•  r  rà  r  rë  rõ  r¹  r%  r­  r  rÅ  r×  r   rÉ  r   rÐ  rS  )"r”   r#  Úis_excÚhas_own_setattrrX   rF   r&  r%  rÊ   Úkwor6  ÚbuilderrÑ   r  Úauto_excr²  rÒ   Úeq_rÓ   Úforce_kw_onlyr±  Úgetstate_setstaterA   rB   rE   Ú
match_argsrJ   Úorder_r?   Úrepr_nsÚslotsrŒ   rÐ   Úweakref_slots"               €€€€€€€€€€€€€€€€€€€€€€r"   ÚwrapÚattrs.<locals>.wrap¡  s¶  ø€ à×9Ô4°SÓ9ˆ	Ø˜TÐ!×D¤j°´mÓ&DˆØ%÷ 
Ô*<Ø�ó+
ˆö žyØCˆCÜ˜S“/Ð!àŒZ÷ 
Ô;Ø��kÐ#7ó
ˆô !×,Ñ,ˆæØ%×1Ñ1‰KØ�TŠ\ö ð ×+Ò+à ×)Ñ)ñ ð
 �UŠ]Ø%×1Ñ1‰KØ‰\Ø˜dÒ"Ô'9¸#¸z×'JÑ'JØ)×5Ñ5‘Ø�t’ 	¨TÒ 1ö "ð  ×/Ò/à$×-Ñ-ñ ð
 �u’Ø)×5Ñ5‘à)×4Ñ4‘àJˆCÜ˜C“.Ð ä ×,Ñ,ˆÞÞ'4�+×#Ò#¸+¿/¹/‰Cà—.‘.ˆCäò !
Ùð!
áð!
ñ ð!
ñ %3ð	!
ô
 7Ø�T˜;¨ôð!
ô 7Ø�T˜;¨ôð!
ñ ð!
ð  &œ:÷ Ü/ØØØØ8ó	øð!
ñ& $ð'!
ñ( (ð)!
ñ* ð+!
ñ, *ð-!
ñ. ð/!
ô0 ;ØØ!ØØ0Øòð1!
ñ> 'ð?!
ñ@ 0ðA!
ˆðF × × ¦Zð AˆCÜ˜C“.Ð äØØØ%ØØ.ñ
ˆð ××Ø×Ñ˜WÔ%à�?�?Ø�O‰OÔà�>�>Ø�N‰NÔØ××Ø×ÑÔæØ×ÑÔ!à××Ø×ÑÕØ×Ñ +×"8Ñ"8Ò8Ø×#Ñ#Ô%à××Ø×ÑÕà×"Ñ"Ô$ÞØ^�Ü “nÐ$çŠ<Ô 2°3¸× FÑ FØ×ÑÔ!÷ ŠLÞÜ& sÐ,<×=Ñ=à×"Ñ"Ô$à×"Ñ"Ó$Ð$r%   )	ÚwarningsÚwarnÚDeprecationWarningr  rQ   rR   rS   r   rT   )Ú	maybe_clsrÐ   r-  r?   r@   rA   rB   r.  r±  r/  rŒ   rÑ   rE   r²  r'  rF   rH   r  rÒ   r*  rJ   rÓ   r+  Úunsafe_hashr)  r2  r0  r(  r,  s    ``` ``````````  `````` `  @@r"   rƒ   rƒ   -  s¢   ÿÿý€ ðB ÑÛà�‰ÜØcóð ð	 	ñ 	
ô ,¨C°U¸DÓA�K€Cˆð ÑØˆä�*œt¤U˜m×,Ñ,Ü—\’\ :Ð.ˆ
÷G%÷ G%÷ G%ò G%ðV ÑØˆá�	‹?Ðr%   c                ó&   • U R                   [        L $ )zJ
Check whether *cls* has a frozen ancestor by looking at its
__setattr__.
)rô   r÷   )r”   s    r"   r  r  9  s   € ð
 �?‰?Ô.Ð.Ð.r%   c           
     óX   • SU SU R                    S[        U SU R                  5       S3$ )z>
Create a "filename" suitable for a function being generated.
z<attrs generated Ú r·   r+   rg   )r*   r�   r)   )r”   Ú	func_names     r"   rè   rè   A  s7   € ð
 ˜I˜; a¨¯©Ð'7°qÜ�3˜¨¯©Ó5Ð
6°að	9ðr%   c                ó  ^^^	^
^^• [        S T 5       5      mSn[        [        U S5      5      m0 m	SnSm
SmU(       d  US-  nOUS-  nUS	-  nS
T
-   m
TS-  mU/mUUU	U
UU4S jnU(       a  TR                  US[         S3-   5        U(       a,  U" S[         S3US-  5        TR                  US-  S-   5        OU" S[         S3US-  5        TR                  US[         3-   5        O	U" SU5        SR                  T5      nUT	4$ )Nc              3  ó‚   #   • U  H5  oR                   S L d   UR                   b  M   UR                  S L d  M1  Uv •  M7     g7f)TN)rA   rF   rÃ   s     r"   r¼   Ú$_make_hash_script.<locals>.<genexpr>N  s/   é € ð ÚˆaŸF™F dšN¨q¯v©v‹À!Ç$Á$È$À,�‰’5ùs   ‚?¥?¶	?ú        rA   zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(Ú)c           	     óv  >• TR                  X-   T-   UST	 S3-   /5        T H|  nUR                  (       aF  SUR                   S3nUR                  TU'   TR                  USU SUR                   S3-   5        MZ  TR                  USUR                   S3-   5        M~     TR                  US-   T-   5        g	)
z»
Generate the code for actually computing the hash code.
Below this will either be returned directly or used to compute
a value which is then cached, depending on the value of cache_hash
r>  Ú,rE  Ú_keyú(self.z),ú        self.ú    N)rç   rG   rž   r    )
ÚprefixÚindentr§   Úcmp_namerƒ   Úclosing_bracesr_   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r"   Úappend_hash_computation_linesÚ8_make_hash_script.<locals>.append_hash_computation_linesf  sÉ   ø€ ð 	×Ñà‘ )Ñ+Ø˜8 I ;¨aÐ0Ñ0ðô	
ó ˆAØ�x�xØ˜qŸv™v˜h dÐ+�Ø"#§(¡(��h‘Ø×#Ñ#Ø˜x¨ z°¸¿¹°x¸rÐBÑBöð ×#Ñ# F¨}¸Q¿V¹V¸HÀAÐ-FÑ$FÖGñ ð 	×Ñ˜F V™O¨nÑ<Õ=r%   zif self.z	 is None:zobject.__setattr__(self, 'ú', r  úself.ú = zreturn self.zreturn rä   )rS   rA   rè   r    rj  rÅ   )r”   rƒ   r±  r²  ÚtabÚhash_defrM  r^   rI  r_   rJ  rK  rL  s    `      @@@@@r"   r¸  r¸  K  sF  ý€ ô ñ Ùóó €Eð €CäÔ.¨s°FÓ;Ó<€Ià€Eà"€HØ€IØ€NÞØ�DÑ‰à�EÑˆàÐYÑYˆØ%¨	Ñ1ˆ	Ø˜#Ñˆà�:€L÷>ò >ö4 Ø×Ñ˜C HÔ->Ð,?¸yÐ"IÑIÔJÞÙ)Ø,Ô->Ð,?¸sÐCÀSÈ1ÁWôð ×Ñ  a¡¨#¡Õ.á)ØÔ)Ð*¨#Ð.°°a±ôð 	×Ñ˜C LÔ1BÐ0CÐ"DÑDÕEá% i°Ô5à�Y‰Y�|Ó$€FØ�5ˆ=Ðr%   c                ó\   • [        XSSS9u  p#[        X#[        U S5      S9  US   U l        U $ )z
Add a hash method to *cls*.
Fr°  r¬  ©ra   )r¸  rc   rè   r¬  ©r”   rƒ   r^   r_   s       r"   Ú	_add_hashrW  “  sA   € ô &Ø˜5¨Uñ�M€Fô ØÔ 9¸#¸zÓ Jòð ˜Ñ$€C„LØ€Jr%   c                óP   • U R                  U5      nU[        L a  [        $ U(       + $ )zR
Check equality and either forward a NotImplemented or
return the result negated.
)rÛ  ÚNotImplemented)r!   ÚotherÚresults      r"   rÞ  rÞ  ¡  s(   € ð
 �[‰[˜Ó€FØ”ÒÜÐàŒ:Ðr%   c                óR  • U  Vs/ s H  oR                   (       d  M  UPM     n n/ SQn0 nU (       aÍ  UR                  S5        U  H¤  nUR                  (       aQ  SUR                   S3nUR                  X4'   UR                  SU SUR                   SU SUR                   S	3	5        O+UR                  S
UR                   SUR                   35        XS   Ld  M™  US    S3US'   M¦     UR                  S5        OUR                  S5        SR	                  U5      nXS4$ s  snf )z.
Create __eq__ method for *cls* with *attrs*.
)zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (rE  rB  r>  rC  z) == z(other.r?  rD  z
 == other.re   z andz    )z    return Truerä   )rF   r    rG   rž   rÅ   )rƒ   r§   ré   r_   rH  r^   s         r"   rß  rß  ­  s  € ñ Ó&š�1§¥�Q™€EÐ&ò€Eð €EÞØ�‰�_Ô%ÛˆAØ�x�xØ˜qŸv™v˜h dÐ+�ð #$§(¡(�‘Ø—‘Ø˜x˜j¨¨q¯v©v¨h°e¸H¸:ÀWÈQÏVÉVÈHÐTUÐVõð —‘˜}¨Q¯V©V¨H°J¸q¿v¹v¸hÐGÔHØ˜b™	Ô!Ø$ R™y˜k¨Ð.��b“	ñ ð 	�‰�WÕà�‰Ð&Ô'à�Y‰Y�uÓ€Fàˆ=Ðùò= 's
   …D$�D$c                óž   ^^• T Vs/ s H  o"R                   (       d  M  UPM     snmU4S jmU4S jnU4S jnU4S jnU4S jnX4XV4$ s  snf )z1
Create ordering methods for *cls* with *attrs*.
c                ó>   >^ • [        S U 4S jT 5        5       5      $ )z
Save us some typing.
c              3  óH   #   • U  H  u  pU(       a  U" U5      OUv •  M     g 7fr5   r   )rº   rö   r¶   s      r"   r¼   Ú6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Ü  s(   é € ð 
ò‘
�ö ‰C�ŒJ 5Ô(òùó   ‚ "c              3  óh   >#   • U  H'  n[        TUR                  5      UR                  4v •  M)     g 7fr5   )r�   rž   rI   )rº   r§   Úobjs     €r"   r¼   r`  Þ  s(   øé € ð Ú=B¸”˜˜aŸf™fÓ% q§{¡{Õ3ºUùs   ƒ/2)rS   )rc  rƒ   s   `€r"   Úattrs_to_tupleÚ#_make_order.<locals>.attrs_to_tupleØ  s)   ù€ ô ñ 
ôÙ=Bôó
ó 
ð 	
r%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :  $ [        $ rœ  ©r¹   rY  ©r!   rZ  rd  s     €r"   ræ  Ú_make_order.<locals>.__lt__ã  ó0   ø€ ð �?‰?˜dŸn™nÒ,Ù! $Ó'©.¸Ó*?Ñ?Ð?äÐr%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :*  $ [        $ rœ  rg  rh  s     €r"   rç  Ú_make_order.<locals>.__le__ì  ó0   ø€ ð �?‰?˜dŸn™nÒ,Ù! $Ó'©>¸%Ó+@Ñ@Ð@äÐr%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :„  $ [        $ rœ  rg  rh  s     €r"   rè  Ú_make_order.<locals>.__gt__õ  rj  r%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :¬  $ [        $ rœ  rg  rh  s     €r"   ré  Ú_make_order.<locals>.__ge__þ  rm  r%   )rH   )r”   rƒ   r§   ræ  rç  rè  ré  rd  s    `     @r"   rê  rê  Ò  sI   ù€ ñ Ó)š�1§¥�Q™Ñ)€Eõ	
õõõõð ˜6Ð)Ð)ùòc *s
   ‡A
ŸA
c                ó�   • Uc  U R                   n[        U5      u  p#[        X#[        U S5      S9  US   U l        [
        U l        U $ )z-
Add equality methods to *cls* with *attrs*.
rÛ  rU  )r˜   rß  rc   rè   rÛ  rÞ  rV  s       r"   Ú_add_eqrs  
  sN   € ð �}Ø×#Ñ#ˆä# EÓ*�M€FÜØÔ 9¸#¸xÓ Hòð �x‘€C„JÜ€C„Jà€Jr%   c                óò  • [        S U  5       5      nU VVVs0 s H  u  p4oT[        :w  d  M  US-   U_M     nnnn[        US'   [        US'   [        US'   / nU HM  u  p4nU(       a  SU-   OSU-   S-   n	U[        :X  a
  U< S	U	< S
3OU< S	U< SU	< S3n
UR                  U
5        MO     SR                  U5      nUc  SnOUS-   nSSSSSSSSSSSSSU SU S3SS/nS R                  U5      U4$ s  snnnf )!z;
Create the source and globs for a __repr__ and return it.
c              3  ó´   #   • U  HN  nUR                   S Ld  M  UR                  UR                   SL a  [         OUR                   UR                  4v •  MP     g7f)FTN)r?   rž   rB   rÃ   s     r"   r¼   Ú$_make_repr_script.<locals>.<genexpr>"  sD   é € ð "âˆAØ�6‰6˜Ðó 	?ˆ�‰˜!Ÿ&™& Dš.•$¨a¯f©f°q·v±vÕ>Úùs
   ‚A™?AÚ_reprr   rZ  r   rP  zgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}r®   z1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __repr__(self):z  try:z:    already_repring = _compat.repr_context.already_repringz  except AttributeError:z!    already_repring = {id(self),}z:    _compat.repr_context.already_repring = already_repringz  else:z#    if id(self) in already_repring:z      return '...'z	    else:z#      already_repring.add(id(self))z    return f'Ú(z)'z
  finally:z$    already_repring.remove(id(self))rä   )rS   r?   r   rZ  r   r    rÅ   )rƒ   r�  Úattr_names_with_reprsrž   ÚrrE  r_   Úattribute_fragmentsrv   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentré   s                 r"   rŒ  rŒ    s]  € ô "ñ "áó"ó Ðñ -BõÚ,A™j˜d qÌ$ÁYÓˆˆw‰˜ÒÑ,Að 
ò ô €Eˆ)ÑÜ,€EÐ
ÑÜ€Eˆ)ÑØÐÛ+‰
ˆ�æˆG�dŠNÐ%6¸Ñ%=ÀÑ%Mð 	ð
 ”D‹yó  £Ñ*ã'+«T³8Ð<ð 	ð
 	×"Ñ" 8Ö,ñ ,ð —I‘IÐ1Ó2€Mà	�zØOÑàÐ!=Ñ=Ðð 	ØØDØ"Ø+ØDØØ-ØØØ-ØØ
Ð)Ð*¨!¨M¨?¸"Ð=ØØ.ð€Eð$ �9‰9�UÓ˜UÐ"Ð"ùôUs
   ™C2­
C2c                óz   • Uc  U R                   n[        X!5      u  p4[        X4[        U S5      S9  US   U l        U $ )z
Add a repr method to *cls*.
r#   rU  )r˜   rŒ  rc   rè   r#   )r”   r�  rƒ   r^   r_   s        r"   Ú	_add_reprr�  T  sH   € ð �}Ø×#Ñ#ˆä% eÓ0�M€FÜØÔ 9¸#¸zÓ Jòð ˜Ñ$€C„LØ€Jr%   c                ó&  • [        U 5      nUcF  [        U [        5      (       d1  [        U 5      n[        USS5      c  Sn[	        U5      e[        U5      $ [        U SS5      nUc,  Ub  [        USS5      nUb  X@l        U$ U < S3n[        U5      eU$ )au  
Return the tuple of *attrs* attributes for a class or instance.

The tuple also allows accessing the fields by their names (see below for
examples).

Args:
    cls (type): Class or instance to introspect.

Raises:
    TypeError: If *cls* is neither a class nor an *attrs* instance.

    attrs.exceptions.NotAnAttrsClassError:
        If *cls* is not an *attrs* class.

Returns:
    tuple (with name accessors) of `attrs.Attribute`

.. versionchanged:: 16.2.0 Returned tuple allows accessing the fields
   by name.
.. versionchanged:: 23.1.0 Add support for generic classes.
.. versionchanged:: 26.1.0 Add support for instances.
Nr˜   z0Passed object must be a class or attrs instance.ú! is not an attrs-decorated class.)r   rQ   r:   r�   rM   rü   r˜   r   )r”   Úgeneric_baseÚtype_rX   rƒ   s        r"   rü   rü   c  s«   € ô0 $ CÓ(€LàÑ¤J¨s´D×$9Ñ$9Ü�S“	ˆÜ�5Ð+¨TÓ2Ñ:ØDˆCÜ˜C“.Ð ä�e‹}Ðä�CÐ*¨DÓ1€Eà�}ØÑ#Ü˜LÐ*;¸TÓBˆEØÑ ð ',Ô#Ø�Ø‘Ð8Ð9ˆÜ" 3Ó'Ð'à€Lr%   c                óÌ   • [        U [        5      (       d  Sn[        U5      e[        U SS5      nUc  U < S3n[	        U5      eU Vs0 s H  o3R
                  U_M     sn$ s  snf )a�  
Return an ordered dictionary of *attrs* attributes for a class, whose keys
are the attribute names.

Args:
    cls (type): Class to introspect.

Raises:
    TypeError: If *cls* is not a class.

    attrs.exceptions.NotAnAttrsClassError:
        If *cls* is not an *attrs* class.

Returns:
    dict[str, attrs.Attribute]: Dict of attribute name to definition

.. versionadded:: 18.1.0
zPassed object must be a class.r˜   Nrƒ  )rQ   r:   rM   r�   r   rž   )r”   rX   rƒ   r§   s       r"   Úfields_dictr‡  –  sj   € ô& �cœ4× Ñ Ø.ˆÜ˜‹nÐÜ�CÐ*¨DÓ1€EØ�}Ø‘Ð8Ð9ˆÜ" 3Ó'Ð'Ù$Ó%šu˜!�F‰F�AŠI™uÑ%Ð%ùÒ%s   ÁA!c           	     ó¾   • [         R                  SL a  g[        U R                  5       H0  nUR                  nUc  M  U" X[        XR                  5      5        M2     g)z˜
Validate all attributes on *inst* that have a validator.

Leaves all exceptions through.

Args:
    inst: Instance of a class with *attrs* attributes.
FN)r   Ú_run_validatorsrü   r¹   r>   r�   rž   )rÿ   r§   rt  s      r"   r/  r/  ³  sI   € ô ×Ñ %Ò'Øä�D—N‘NÖ#ˆØ�K‰KˆØ‹=Ùˆd”w˜t§V¡VÓ,Ö-ò $r%   c                óT   • UR                  U 5      nU=(       a    SUR                  ;   $ )z6
Check if the attribute name comes from a slot class.
rb  )r°   r“   )Úa_namer¥   r”   s      r"   Ú_is_slot_attrrŒ  Å  s(   € ð ×
Ñ
˜FÓ
#€CØ×.�; #§,¡,Ñ.Ð.r%   c                ó^  • U
S L=(       a    U
[         R                  LnU(       a  U(       a  Sn[        U5      eU=(       d    Un/ n0 nU H³  nUR                  (       d  UR                  [
        L a  M)  UR                  U5        UUUR                  '   UR                  b3  USL a*  UR                  [         R                  La  Sn[        U5      eSnM‰  U(       d  M’  UR                  [         R                  Ld  M±  SnMµ     [        UUUUUUUUU	UUU(       a  SOS5      u  nnnU R                  [        R                  ;   a6  UR                  [        R                  U R                     R                  5        UR                  [
        US.5        U(       a  [        R                   US'   UUU4$ )Nz$Frozen classes can't use on_setattr.TrÔ  r=  )r   Ú	attr_dictrâ   )r   rô  rN   rB   r=   r   r    rž   rJ   Ú_attrs_to_init_scriptr*   rd  ÚmodulesrC  r“   rÍ   rÎ   )r”   rƒ   Úpre_initÚpre_init_has_argsÚ	post_initr±  r.  r²  r¥   r#  Úcls_on_setattrr½  Úhas_cls_on_setattrrX   Úneeds_cached_setattrÚfiltered_attrsrŽ  r§   r^   r_   r   s                        r"   rÄ  rÄ  Í  sw  € ð 	˜dÐ"×J ~¼W¿]¹]Ð'Jð ö Ö$Ø4ˆÜ˜‹oÐà%×/¨ÐØ€NØ€IÛˆØ�v�v˜!Ÿ)™)¤wÒ.Ùà×Ñ˜aÔ Øˆ	�!—&‘&Ñà�<‰<Ñ#Ø˜Š~ !§,¡,´g·m±mÒ"CØ<�Ü  “oÐ%à#'Ò ßÐ A§L¡L¼¿¹Ô$EØ#'Ò ñ ô  "7ØØØØØØØØØØØÞ&Ñ¨Jó"Ñ€FˆE�;ð ‡~�~œŸ™Ó$à�‰”S—[‘[ §¡Ñ0×9Ñ9Ô:à	‡L�LœW°9Ñ=Ô>æô (4×';Ñ';ˆÐ#Ñ$à�5˜+Ð%Ð%r%   c                ó   • SU  SU S3$ )zB
Use the cached object.setattr to set *attr_name* to *value_var*.
ú
_setattr('rO  r?  r   )r   Ú	value_varÚhas_on_setattrs      r"   Ú_setattrrœ    s   € ð ˜	�{ # i [°Ð2Ð2r%   Ú	Converterc                ó2   • SU  SUR                  X5       S3$ )z_
Use the cached object.setattr to set *attr_name* to *value_var*, but run
its converter first.
r™  rO  r?  )Ú_fmt_converter_call©r   rš  r›  rC   s       r"   Ú_setattr_with_converterr¡    s&   € ð ˜	�{ # i×&CÑ&CÀIÓ&YÐ%ZÐZ[Ð\Ð\r%   c                ó8   • U(       a  [        XS5      $ SU  SU 3$ )zc
Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
relegate to _setattr.
TrP  rQ  )rœ  )r   rö   r›  s      r"   Ú_assignr£  #  s'   € ö
 Ü˜	¨$Ó/Ð/à�9�+˜S  Ð(Ð(r%   c                óX   • U(       a  [        XSU5      $ SU  SUR                  X5       3$ )zƒ
Unless *attr_name* has an on_setattr hook, use normal assignment after
conversion. Otherwise relegate to _setattr_with_converter.
TrP  rQ  )r¡  rŸ  r   s       r"   Ú_assign_with_converterr¥  .  s5   € ö Ü& y¸TÀ9ÓMÐMà�9�+˜S ×!>Ñ!>¸yÓ!TÐ UÐVÐVr%   c                óš   ^• U SL a9  USL a  S[         [        4$         SU4S jjn          SU4S jjnSUU4$ S[        [        4$ )z[
Determine the correct setter functions based on whether a class is frozen
and/or slotted.
Tr   c                óN   >• [        U T5      (       a  [        XU5      $ SU  SU 3$ ©Nú_inst_dict['z'] = )rŒ  rœ  )r   rš  r›  r¥   s      €r"   Ú
fmt_setterÚ&_determine_setters.<locals>.fmt_setterK  s2   ø€ ô ˜Y¨×6Ñ6Ü 	°nÓEÐEà! ) ¨E°)°Ð=Ð=r%   c                óz   >• U(       d  [        U T5      (       a  [        XX#5      $ SU  SUR                  X5       3$ r¨  )rŒ  r¡  rŸ  )r   rš  r›  rC   r¥   s       €r"   Úfmt_setter_with_converterÚ5_determine_setters.<locals>.fmt_setter_with_converterS  sH   ø€ ö ¤¨y¸-×!HÑ!HÜ.Ø¨.óð ð " ) ¨E°)×2OÑ2OÐPYÓ2eÐ1fÐgÐgr%   )z_inst_dict = self.__dict__©r   rŒ   rš  rŒ   r›  r(  r¶  rŒ   ©
r   rŒ   rš  rŒ   r›  r(  rC   r�  r¶  rŒ   )rœ  r¡  r£  r¥  )r±  r.  r¥   rª  r­  s     `  r"   Ú_determine_settersr±  ;  s¤   ø€ ð �‚~Ø�DŠ=Ø”xÔ!8Ð8Ð8ð	>Øð	>Ø'*ð	>Ø<@ð	>à÷	>ð	hØð	hàð	hð !ð	hð !ð		hð
 ÷	hð ,ØØ%ð
ð 	
ð ŒwÔ.Ð.Ð.r%   c           
     ó$  • U(       a  S/O/ nU	(       a  UR                  S5        [        XU5      u  pÞnUR                  U5        / n/ n/ n/ n0 nSS0nU  GHT  nUR                  (       a  UR                  U5        UR                  nUR
                  SL=(       d%    UR
                  [        R                  L=(       a    U
nUR                  n[        UR                  [        5      nU(       a  UR                  R                  (       a  SOSnUR                  b5  [        UR                  [        5      (       d  [        UR                  5      nOUR                  nUR                  SL Ga  U(       aœ  [         UR                  4-  nUbJ  UR                  U" UUSU S	3-   UU5      5        UR                  UUR#                  UR                  5      '   O UR                  U" UUSU S	3-   U5      5        UR                  R$                  UU'   GO>UbH  UR                  U" US
U S3UU5      5        UR                  UUR#                  UR                  5      '   GOóUR                  U" US
U S3U5      5        GOÔUR                  [&        La¶  U(       d¯  U SU S3nUR(                  (       a  UR                  U5        O"UR                  U5        UR                  U5        UbD  UR                  U" UUUU5      5        UR                  UUR#                  UR                  5      '   GO&UR                  U" UUU5      5        GOU(       Ga_  U S3nUR(                  (       a  UR                  U5        O"UR                  U5        UR                  U5        UR                  SU S35        [         UR                  4-  nUb}  UR                  SU" UUUU5      -   5        UR                  S5        UR                  SU" UUS-   U-   S	-   UU5      -   5        UR                  UUR#                  UR                  5      '   ORUR                  SU" UUU5      -   5        UR                  S5        UR                  SU" UUS-   U-   S	-   U5      -   5        UR                  R$                  UU'   O¤UR(                  (       a  UR                  U5        O"UR                  U5        UR                  U5        UbC  UR                  U" UUUU5      5        UR                  UUR#                  UR                  5      '   OUR                  U" UUU5      5        UR                  SL d  GM	  UR*                  b  Uc  UR*                  UU'   GM+  Uc  GM1  UR,                  (       d  GME  UR,                  UU'   GMW     U(       az  [.        US'   UR                  S5        U HZ  nSUR                  -   nSUR                  -   nUR                  SU SU SUR                   S	35        UR                  UU'   UUU'   M\     U(       a  UR                  S5        U(       a?  U(       a  U(       a  S[0         S3n OS[0         S3n O
S[0         S3n UR                  U 5        U(       a-  S R3                  S! U  5       5      n!UR                  S"U! S	35        S#R3                  U5      nS#R3                  U5      nU(       ac  UU(       a  S#OS S$S#R3                  U5       3-  nS#R3                  S% U 5        V"s/ s H
  n"U" S&U" 3PM     sn"5      n#UU(       a  S#OS-  nUU#-  nU(       a  U(       a	  S'U S	3US('   S)n$S*U SU S+U(       a  U$R3                  U5      OS, S-3UU4$ s  sn"f ).z›
Return a script of an initializer for *attrs*, a dict of globals, and
annotations for the initializer.

The globals are required by the generated script.
zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)r¶  Nr!   Ú Frx  r?  zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:rE  zelse:Tr   z#if _config._run_validators is True:Ú__attr_validator_Ú__attr_z(self, z, self.zself.__attrs_post_init__()r™  z', None)r©  z	'] = NonerP  z = NonerA  c              3  ód   #   • U  H&  oR                   (       d  M  S UR                   3v •  M(     g7f)rP  N)rB   rž   rÃ   s     r"   r¼   Ú(_attrs_to_init_script.<locals>.<genexpr>P	  s"   é € ÐB²%¨Q¿6½6Ó(˜% §¡˜xÕ(²%ùs   ‚0š0zBaseException.__init__(self, r®   z*, c              3  óH   #   • U  H  oR                  S 5      S   v •  M     g7f)Ú=r   N)Úsplit)rº   Úkwas     r"   r¼   r·  ]	  s   é € Ð#NÂ¸#§I¡I¨c£N°1Ö$5Âùra  r¹  zself.__attrs_pre_init__(r   z
    zdef z):
    Úpassrä   )r    r±  rç   r>   rž   rJ   r   rô  rK   rQ   r=   rP   Ú
takes_selfrC   r�  rB   Ú_INIT_FACTORY_PATÚ_get_global_namerW   r   rE   r:   Ú_first_param_typer   rj  rÅ   )%rƒ   r#  r!  Úcall_pre_initr’  Úcall_post_initÚdoes_cache_hashr¥   r#  r–  r•  Úmethod_nameré   Úextra_linesrª  r­  rý   Úpre_init_argsÚkw_only_argsÚattrs_to_validateÚnames_for_globalsr   r§   r   r›  Úarg_nameÚhas_factoryÚ
maybe_selfrC   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚkw_arg_nameÚpre_init_kw_only_argsÚNLs%                                        r"   r�  r�  j  sb  € ö( .;Ð(Ñ)À€EæØ�‰ð 3ô		
ô :LØ˜}ó:Ñ6€KÐ6ð 
‡L�L�Ôà€DØ€MØ€LØÐð ÐØ˜TÐ"€KäˆØ�;�;Ø×$Ñ$ QÔ'à—F‘Fˆ	ØŸ™¨TÐ1÷ 
Ø�L‰L¤§¡Ð-×DÐ2Dð 	ð
 —7‘7ˆä  §¡¬GÓ4ˆÞ*¨q¯y©y×/C×/C‘VÈˆ
à�;‰;Ñ"¬:°a·k±kÄ9×+MÑ+MÜ! !§+¡+Ó.‰IàŸ™ˆIà�6‰6�U‹?ÞÜ$5¸¿¹¸	Ñ$AÐ!ØÑ(Ø—L‘LÙ1Ø%Ø-°!°J°<¸qÐ0AÑAØ*Ø%ó	ôð "×+Ñ+ð & i×&@Ñ&@ÀÇÁÓ&HÒIð —L‘LÙ"Ø%Ø-°!°J°<¸qÐ0AÑAØ*óôð 89·y±y×7HÑ7HÐ!Ð"3Ó4ØÑ&Ø—‘Ù-Ø!Ø% i [°
Ð;Ø&Ø!ó	ôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÓEð —‘ÙØ!Ø% i [°
Ð;Ø&óöð �Y‰YœgÒ%®kØ�J˜l¨9¨+°ZÐ@ˆCØ�y�yØ×#Ñ# CÕ(à—‘˜CÔ Ø×$Ñ$ XÔ.àÑ$Ø—‘Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÓEð —‘™Z¨	°8¸^ÓLÖMçØ�J˜hÐ'ˆCØ�y�yØ×#Ñ# CÕ(à—‘˜CÔ Ø×$Ñ$ XÔ.Ø�L‰L˜3˜x˜jÐ(8Ð9Ô:ä 1°Q·V±V°IÑ =ÐØÑ$Ø—‘ØÙ/Ø! 8¨^¸Yóñôð —‘˜WÔ%Ø—‘ØÙ/Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&Ø!ó	ñôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÒEð —‘Ø™Z¨	°8¸^ÓLÑLôð —‘˜WÔ%Ø—‘ØÙ Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&óñôð 45·9±9×3DÑ3DÐÐ/Ò0à�y�yØ×#Ñ# HÕ-à—‘˜HÔ%Ø×$Ñ$ XÔ.àÑ$Ø—‘Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÒEð —‘™Z¨	°8¸^ÓLÔMà�6‰6�T�>Ø�v‰vÑ! iÑ&7Ø()¯©�˜HÔ%ØÔ&¨9×+F×+FÒ+Fà(1×(CÑ(C�˜HÔ%ñq öt Ü'.Ð˜)Ñ$Ø�‰Ð:Ô;Û"ˆAØ*¨Q¯V©VÑ3ˆHØ! A§F¡FÑ*ˆIØ�L‰L˜4 ˜z¨°°¸7À1Ç6Á6À(È!ÐLÔMØ*+¯+©+Ð˜hÑ'Ø+,Ð˜iÓ(ñ #ö Ø�‰Ð1Ô2ö ÞÞØ$.Ô/@Ð.AÀÐ"J‘à$0Ô1BÐ0CÀ9Ð"M‘à %Ô&7Ð%8¸Ð@ˆOØ�‰�_Ô%ö Ø�x‰xÑB±%ÓBÓBˆà�‰Ð4°T°F¸!Ð<Ô=à�9‰9�T‹?€DØ—I‘I˜mÓ,€MÞàž4‘4 RÐ(¨¨D¯I©I°lÓ,CÐ+DÐEÑEˆØ $§	¡	ñ $OÁÔ#Nóò $O�Kð �-˜q  Ó.á#Nñó!
Ðð 	¦™°BÑ6ˆØÐ.Ñ.ˆæÖ*à-¨m¨_¸AÐ>ˆˆa‰ð 
€Bà��˜W T Fð +Þ€R‡W�WˆU„^ &Ð)ð *ð	ð 	Øðð ùòs   Ü"^c                ó$   • U R                  S5      $ )zµ
The default __init__ parameter name for a field.

This performs private-name adjustment via leading-unscore stripping,
and is the default value of Attribute.alias if not provided.
rE  )Úlstripr  s    r"   rÏ   rÏ   r	  s   € ð �;‰;�sÓÐr%   c                  ó~   • \ rS rSrSrSr           SS jrS r\ S     SS jj5       r	S r
S	 rS
 rS rSrg)rÇ   i}	  aò  
*Read-only* representation of an attribute.

.. warning::

   You should never instantiate this class yourself.

The class has *all* arguments of `attr.ib` (except for ``factory`` which is
only syntactic sugar for ``default=Factory(...)`` plus the following:

- ``name`` (`str`): The name of the attribute.
- ``alias`` (`str`): The __init__ parameter name of the attribute, after
  any explicit overrides and default private-attribute-name handling.
- ``alias_is_default`` (`bool`): Whether the ``alias`` was automatically
  generated (``True``) or explicitly provided by the user (``False``).
- ``inherited`` (`bool`): Whether or not that attribute has been inherited
  from a base class.
- ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The
  callables that are used for comparing and ordering objects by this
  attribute, respectively. These are set by passing a callable to
  `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also
  :ref:`comparison customization <custom-comparison>`.

Instances of this class are frequently used for introspection purposes
like:

- `fields` returns a tuple of them.
- Validators get them passed as the first argument.
- The :ref:`field transformer <transform-fields>` hook receives a list of
  them.
- The ``alias`` property exposes the __init__ parameter name of the field,
  with any overrides and default private-attribute handling applied.


.. versionadded:: 20.1.0 *inherited*
.. versionadded:: 20.1.0 *on_setattr*
.. versionchanged:: 20.2.0 *inherited* is not taken into account for
    equality checks and hashing anymore.
.. versionadded:: 21.1.0 *eq_key* and *order_key*
.. versionadded:: 22.2.0 *alias*
.. versionadded:: 26.1.0 *alias_is_default*

For the full version history of the fields, see `attr.ib`.
)rž   r=   r>   r?   rF   rG   rH   rI   rA   rB   rD   r:   rC   rE   rš   rJ   rK   rÁ   Nc                ó$  • [        X^=(       d    UU=(       d    US5      u  pÞnn[        R                  U 5      nU" SU5        U" SU5        U" SU5        U" SU5        U" SU5        U" SU5        U" SU5        U" S	U5        U" S
U5        U" SU5        U" SU5        U" SU	(       a  [        R                  " [        U	5      5      O[        5        U" SU
5        U" SU5        U" SU5        U" SU5        U" SU5        U" SUc	  US L 5        g U5        g )NTrž   r=   r>   r?   rF   rG   rH   rI   rA   rB   rC   rD   r:   rE   rš   rJ   rK   rÁ   )rL   rÍ   rÎ   ÚtypesÚMappingProxyTyper"  Ú_EMPTY_METADATA_SINGLETON)r!   rž   r=   r>   r?   r@   rA   rB   rš   rD   r:   rC   rE   rF   rG   rH   rI   rJ   rK   rÁ   Úbound_setattrs                        r"   r=  ÚAttribute.__init__Â	  s"  € ô, (BØ—˜2˜y×1¨E°4ó(
Ñ$ˆ�E˜9ô
 %×,Ñ,¨TÓ2ˆñ 	�f˜dÔ#Ù�i Ô)Ù�k 9Ô-Ù�f˜dÔ#Ù�d˜BÔÙ�h Ô'Ù�g˜uÔ%Ù�k 9Ô-Ù�f˜dÔ#Ù�f˜dÔ#Ù�k 9Ô-ÙØö ô ×&Ò&¤t¨H£~Ô6ä.ô	
ñ 	�f˜dÔ#Ù�i Ô)Ù�k 9Ô-Ù�l JÔ/Ù�g˜uÔ%ÙØØ-Ñ5ˆE�TˆMõ	
à;Kõ	
r%   c                ó   • [         er5   )r   rõ   s      r"   rô   ÚAttribute.__setattr__þ	  s   € Ü!Ð!r%   c                óà  • Uc  UR                   nOUR                   b  SU S3n[        U5      eU " UUR                  UR                  UR                  S UR
                  UR                  SUR                  UUR                  UR                  c  UOUR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  S L 5      $ )Nz>Type annotation and type argument cannot both be present for 'z'.F)r:   rN   Ú_defaultÚ
_validatorr?   rA   rB   rD   rC   rE   rF   rG   rH   rI   rJ   rK   )r”   rž   rÛ   rE   r:   rX   s         r"   rÈ   ÚAttribute.from_counting_attr
  sÉ   € ð ‰<Ø—7‘7‰DØ�W‰WÑ ØRÐSWÐRXÐXZÐ[ˆCÜ˜S“/Ð!ÙØØ�K‰KØ�M‰MØ�G‰GØØ�G‰GØ�G‰GØØ�K‰KØØ�L‰LØ—z‘zÑ)‰G¨r¯z©zØ�E‰EØ�I‰IØ�H‰HØ�L‰LØ�M‰MØ�H‰HØ�H‰H˜Ðó'
ð 	
r%   c                ó\  • [         R                   " U 5      nUR                  UR                  5       5        SU;   a$  SU;  a  [        R	                  U5      " SS5        U$ SU;   aF  SU;  a@  U R
                  (       a/  [        R	                  U5      " S[        UR                  5      5        U$ )zÚ
Copy *self* and apply *changes*.

This works similarly to `attrs.evolve` but that function does not work
with :class:`attrs.Attribute`.

It is mainly meant to be used for `transform-fields`.

.. versionadded:: 20.3.0
rK   rÁ   Frž   )ÚcopyÚ	_setattrsrÄ   rÍ   rÎ   rÁ   rÏ   rž   )r!   rþ   Únews      r"   rŸ   ÚAttribute.evolve$
  s–   € ô �iŠi˜‹oˆà�‰�g—m‘m“oÔ&à�gÓÐ"4¸GÓ"Cä× Ñ  Ô%Ð&8¸%Ô@ð ˆ
ð �gÓØ˜wÓ&à×%×%ô × Ñ  Ô%ØÔ0°·±Ó:ôð ˆ
r%   c                óB   ^ • [        U 4S jT R                   5       5      $ )ú
Play nice with pickle.
c              3  ór   >#   • U  H,  nUS :w  a  [        TU5      O[        TR                  5      v •  M.     g7f)rD   N)r�   r"  rD   ©rº   rž   r!   s     €r"   r¼   Ú)Attribute.__getstate__.<locals>.<genexpr>H
  s4   øé € ð 
â&�ð $(¨:Ó#5ŒG�D˜$Ô¼4ÀÇÁÓ;NÔNÚ&ùs   ƒ47©rS   rb  r    s   `r"   r  ÚAttribute.__getstate__D
  s#   ø€ ô ô 
àŸšó
ó 
ð 	
r%   c                óR  • [        U5      [        U R                  5      :  a`  [        [        U R                  U5      5      nUR	                  S5      SL =(       d     UR	                  S5      [        US   5      :H  n/ UQUP7nU R                  [        U R                  U5      5        g)rê  rK   Nrž   )rh   rb  r"  r£  r°   rÏ   ræ  )r!   r¤  Ú
state_dictrÁ   s       r"   r  ÚAttribute.__setstate__M
  s›   € ô ˆu‹:œ˜DŸN™NÓ+Ó+ô œc $§.¡.°%Ó8Ó9ˆJØ)Ÿ~™~Øó àð ÷  à#Ÿ™¨Ó0Ô4KØ˜6Ñ"ó5ñ ð ð
 /�eÐ.Ð-Ñ.ˆEà�‰”s˜4Ÿ>™>¨5Ó1Õ2r%   c           	     óÊ   • [         R                  U 5      nU HH  u  p4US:w  a
  U" X45        M  U" UU(       a  [        R                  " [	        U5      5      O[
        5        MJ     g )NrD   )rÍ   rÎ   rÙ  rÚ  r"  rÛ  )r!   Úname_values_pairsrÜ  rž   rö   s        r"   ræ  ÚAttribute._setattrs^
  sU   € Ü$×,Ñ,¨TÓ2ˆÛ,‰KˆDØ�zÓ!Ù˜dÖ*áØö !ô ×.Ò.¬t°E«{Ô;ä6öò	 -r%   r   )NNNFNNNNNNNr5   )rž   rŒ   rÛ   rV   rE   r(  )r)   r*   r+   r,   r-   rb  r=  rô   rn  rÈ   rŸ   r  r  ræ  r0   r   r%   r"   rÇ   rÇ   }	  s‚   † ñ+ð^€Ið> ØØØØØØØØØØô):
òx"ð à?Cð
Øð
Ø)ð
Ø48ô
ó ð
òDò@
ò3õ"r%   rÇ   rÁ   rD   )rž   r=   r>   r?   r@   rF   rH   rA   rB   rš   rK   )rƒ   rš   c                  ó~   • \ rS rSrSrSr/ \" S S 5       5      Q\" SSSSSSS	SS	SSS	SS	SS
9P7rSr	S r
S rS rSrg)rV   iˆ
  a  
Intermediate representation of attributes that uses a counter to preserve
the order in which the attributes have been defined.

*Internal* data structure of the attrs library.  Running into is most
likely the result of a bug like a forgotten `@attr.s` decorator.
)rá  râ  rK   rC   r±   rF   rG   rA   rB   rE   rD   rJ   rH   rI   r?   r:   c              #  ój   #   • U  H)  n[        U[        U5      [        S SS SSSSS SS SS S9v •  M+     g 7f)NTF©rž   rK   r=   r>   r?   r@   rA   rB   rE   rF   rG   rH   rI   rš   rJ   )rÇ   rÏ   r   )rº   rž   s     r"   r¼   Ú_CountingAttr.<genexpr>¤
  sR   é € ð 
ò$
�ô# ØÜ-¨dÓ3ÜØØØØØØØØØØØØöò"
ùs   ‚13)	r±   rá  r?   rF   rH   rA   rB   rJ   rK   rD   NTFrø  r   c                ó  • [         =R                  S-  sl        [         R                  U l        Xl        X l        Xpl        X0l        X°l        XÀl        XÐl	        Xàl
        XPl        X`l        X€l        X�l        X l        Xðl        UU l        g r¿   )rV   Úcls_counterr±   rá  râ  rC   r?   rF   rG   rH   rI   rA   rB   rD   r:   rE   rJ   rK   )r!   r=   r>   r?   r@   rA   rB   rC   rD   r:   rE   rF   rG   rH   rI   rJ   rK   s                    r"   r=  Ú_CountingAttr.__init__Ö
  so   € ô& 	×!Ò! QÑ&Õ!Ü$×0Ñ0ˆŒØŒØ#ŒØ"ŒØŒ	ØŒØŒØŒ
Ø"ŒØŒ	ØŒ	Ø ŒØŒ	ØŒØ$ŒØˆ�
r%   c                óf   • U R                   c  Xl         U$ [        U R                   U5      U l         U$ )zl
Decorator that adds *meth* to the list of validators.

Returns *meth* unchanged.

.. versionadded:: 17.1.0
)râ  rU   ©r!   rä  s     r"   r>   Ú_CountingAttr.validatorû
  s3   € ð �?‰?Ñ"Ø"ŒOð ˆô # 4§?¡?°DÓ9ˆDŒOØˆr%   c                óV   • U R                   [        La  [        e[        USS9U l         U$ )z¶
Decorator that allows to set the default for an attribute.

Returns *meth* unchanged.

Raises:
    DefaultAlreadySetError: If default has been set before.

.. versionadded:: 17.1.0
T)r½  )rá  r   r   rP   rþ  s     r"   r=   Ú_CountingAttr.default	  s)   € ð �=‰=¤Ò'Ü(Ð(ä °Ñ6ˆŒàˆr%   )r)   r*   r+   r,   r-   rb  rS   rÇ   r˜   rû  r=  r>   r=   r0   r   r%   r"   rV   rV   ˆ
  s…   † ñð€Ið$0Ù	ñ 
ñ$
ó%
ó 

ð0ñ> 	ØØØØØØØØØØØØØØØñ	
ñ?0€Oðb €Kò#òJõr%   rV   c                  ó†   • \ rS rSrSr " S S\R                  5      r " S S\R                  5      rSr	S r
\S	 5       rS
rg)rÉ   i  añ  
Effective class properties as derived from parameters to `attr.s()` or
`define()` decorators.

This is the same data structure that *attrs* uses internally to decide how
to construct the final class.

Warning:

    This feature is currently **experimental** and is not covered by our
    strict backwards-compatibility guarantees.


Attributes:
    is_exception (bool):
        Whether the class is treated as an exception class.

    is_slotted (bool):
        Whether the class is `slotted <slotted classes>`.

    has_weakref_slot (bool):
        Whether the class has a slot for weak references.

    is_frozen (bool):
        Whether the class is frozen.

    kw_only (KeywordOnly):
        Whether / how the class enforces keyword-only arguments on the
        ``__init__`` method.

    collected_fields_by_mro (bool):
        Whether the class fields were collected by method resolution order.
        That is, correctly but unlike `dataclasses`.

    added_init (bool):
        Whether the class has an *attrs*-generated ``__init__`` method.

    added_repr (bool):
        Whether the class has an *attrs*-generated ``__repr__`` method.

    added_eq (bool):
        Whether the class has *attrs*-generated equality methods.

    added_ordering (bool):
        Whether the class has *attrs*-generated ordering methods.

    hashability (Hashability): How `hashable <hashing>` the class is.

    added_match_args (bool):
        Whether the class supports positional `match <match>` over its
        fields.

    added_str (bool):
        Whether the class has an *attrs*-generated ``__str__`` method.

    added_pickling (bool):
        Whether the class has *attrs*-generated ``__getstate__`` and
        ``__setstate__`` methods for `pickle`.

    on_setattr_hook (Callable[[Any, Attribute[Any], Any], Any] | None):
        The class's ``__setattr__`` hook.

    field_transformer (Callable[[Attribute[Any]], Attribute[Any]] | None):
        The class's `field transformers <transform-fields>`.

.. versionadded:: 25.4.0
c                  ó.   • \ rS rSrSrSr Sr Sr SrSr	g)	ÚClassProps.Hashabilityid  z7
The hashability of a class.

.. versionadded:: 25.4.0
ÚhashableÚhashable_cacheÚ
unhashableÚleave_aloner   N)
r)   r*   r+   r,   r-   r  r'  r   r  r0   r   r%   r"   r&  r  d  s)   † ñ	ð ˆØ#Ø*ˆØ6Ø!ˆ
Ø+Ø#ˆÚ'r%   r&  c                  ó(   • \ rS rSrSrSr Sr SrSrg)ÚClassProps.KeywordOnlyit  z_
How attributes should be treated regarding keyword-only parameters.

.. versionadded:: 25.4.0
rÚ   ÚyesÚforcer   N)	r)   r*   r+   r,   r-   rË   r!  rÌ   r0   r   r%   r"   rÊ   r
  t  s!   † ñ	ð ˆØ.ØˆØQØˆÚ.r%   rÊ   ©r,  r!  r$  r#  rE   r   r  r  r  r  r%  r  r  r1  r-  rÓ   c                óÆ   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        X€l        X�l        X l	        X°l
        XÀl        XÐl        Xàl        Xðl        UU l        g r5   r  )r!   r,  r!  r$  r#  rE   r   r  r  r  r  r%  r  r  r1  r-  rÓ   s                    r"   r=  ÚClassProps.__init__•  s_   € ð& )ÔØ$ŒØ 0ÔØ"ŒØŒØ'>Ô$Ø$ŒØ$ŒØ ŒØ,ÔØ&ÔØ 0ÔØ"ŒØ,ÔØ.ÔØ!2ˆÕr%   c                ó¨   • U R                   [        R                  R                  L =(       d&    U R                   [        R                  R                  L $ r5   )r%  rÉ   r&  r  r'  r    s    r"   r"  ÚClassProps.is_hashable¹  sC   € ð ×Ñ¤
× 6Ñ 6× ?Ñ ?Ð?÷ JØ×Ñ¤:×#9Ñ#9×#IÑ#IÐIð	
r%   )r  r  r  r  r1  r  r  r   rÓ   r$  r%  r,  r#  r!  rE   r-  N)r)   r*   r+   r,   r-   r.   ÚEnumr&  rÊ   rb  r=  rz   r"  r0   r   r%   r"   rÉ   rÉ     sJ   † ñBôH(�d—i‘iô (ô /�d—i‘iô /ð€Iò&"3ðH ñ
ó ó
r%   rÉ   c                  ó2   • \ rS rSrSrSrSS jrS rS rSr	g)	rP   iÕ  aÇ  
Stores a factory callable.

If passed as the default value to `attrs.field`, the factory is used to
generate a new value.

Args:
    factory (typing.Callable):
        A callable that takes either none or exactly one mandatory
        positional argument depending on *takes_self*.

    takes_self (bool):
        Pass the partially initialized instance that is being initialized
        as a positional argument.

.. versionadded:: 17.1.0  *takes_self*
©rW   r½  c                ó   • Xl         X l        g r5   r  )r!   rW   r½  s      r"   r=  ÚFactory.__init__ê  s   € ØŒØ$�r%   c                óB   ^ • [        U 4S jT R                   5       5      $ )rê  c              3  ó<   >#   • U  H  n[        TU5      v •  M     g 7fr5   rž  rì  s     €r"   r¼   Ú'Factory.__getstate__.<locals>.<genexpr>ò  s   øé € ÐD²^¨T”W˜T 4×(Ð(²^ùs   ƒrî  r    s   `r"   r  ÚFactory.__getstate__î  s   ø€ ô ÔD°T·^²^ÓDÓDÐDr%   c                óZ   • [        U R                  U5       H  u  p#[        XU5        M     g)rê  N)r£  rb  r\  )r!   r¤  rž   rö   s       r"   r  ÚFactory.__setstate__ô  s%   € ô ˜tŸ~™~¨uÖ5‰KˆDÜ�D Ö&ò 6r%   N)F)
r)   r*   r+   r,   r-   rb  r=  r  r  r0   r   r%   r"   rP   rP   Õ  s   † ñð$ *€Iô%òEõ'r%   rP   )
rž   r=   r>   r?   r@   rF   rH   rA   rB   rš   c                  óV   • \ rS rSrSrSrSSS.S jr\SS j5       rSS jr	S	 r
S
 rSrg)r�  i  a1  
Stores a converter callable.

Allows for the wrapped converter to take additional arguments. The
arguments are passed in the order they are documented.

Args:
    converter (Callable): A callable that converts the passed value.

    takes_self (bool):
        Pass the partially initialized instance that is being initialized
        as a positional argument. (default: `False`)

    takes_field (bool):
        Pass the field definition (an :class:`Attribute`) into the
        converter as a positional argument. (default: `False`)

.. versionadded:: 24.1.0
)Ú__call__rÀ  Ú_global_namerC   Útakes_fieldr½  F©r½  r   c               ó   ^ • UT l         UT l        UT l        [        U5      nUR	                  5       T l        T R                  (       d  T R                  (       d  U 4S jT l        OmT R                  (       a  T R                  (       d  U 4S jT l        O?T R                  (       d  T R                  (       a  U 4S jT l        OT R                   T l        UR                  5       nUb  UT R                  R                  S'   g g )Nc                ó&   >• TR                  U 5      $ r5   ©rC   )rö   rE  Ú__r!   s      €r"   r´   Ú$Converter.__init__.<locals>.<lambda>6  s   ø€ °·±ÀÔ1Fr%   c                ó&   >• TR                  X5      $ r5   r$  )rö   Úinstancer%  r!   s      €r"   r´   r&  8  s   ø€ ¸¿¹Øô9r%   c                ó&   >• TR                  X5      $ r5   r$  )rö   r%  rÍ  r!   s      €r"   r´   r&  <  s   ø€ °T·^±^Øô6r%   r¶  )	rC   r½  r   r   Úget_first_param_typerÀ  r  Úget_return_typerˆ   )r!   rC   r½  r   ÚexÚrts   `     r"   r=  ÚConverter.__init__-  sµ   ø€ Ø"ˆŒØ$ˆŒØ&ˆÔä! )Ó,ˆØ!#×!8Ñ!8Ó!:ˆÔà—— 4×#3×#3ÜFˆD�MØ�_�_ T×%5×%5ôˆD�Mð —— T×%5×%5ôˆD�Mð !ŸN™NˆDŒMà×ÑÓ!ˆØ‰>Ø68ˆD�M‰M×)Ñ)¨(Ò3ð r%   c                ó   • SU  3$ )zP
Return the name that a converter for an attribute name *attr_name*
would have.
Ú__attr_converter_r   )r   s    r"   r¿  ÚConverter._get_global_nameF  s   € ð # 9 +Ð.Ð.r%   c                óp  • U R                   (       d(  U R                  (       d  U R                  U5       SU S3$ U R                   (       a+  U R                  (       a  U R                  U5       SU SU S3$ U R                   (       a  U R                  U5       SU S3$ U R                  U5       SU SU S3$ )z¯
Return a string that calls the converter for an attribute name
*attr_name* and the value in variable named *value_var* according to
`self.takes_self` and `self.takes_field`.
rx  r?  z, self, attr_dict['z'])z, self)z, attr_dict[')r½  r   r¿  )r!   r   rš  s      r"   rŸ  ÚConverter._fmt_converter_callN  s¶   € ð —— 4×#3×#3Ø×+Ñ+¨IÓ6Ð7°q¸¸À1ÐEÐEà�?�?˜t×/×/Ø×+Ñ+¨IÓ6Ð7°q¸¸ÐCVÐW`ÐVaÐadÐeÐeà�?�?Ø×+Ñ+¨IÓ6Ð7°q¸¸À7ÐKÐKà×'Ñ'¨	Ó2Ð3°1°Y°K¸}ÈYÈKÐWZÐ[Ð[r%   c                óJ   • U R                   U R                  U R                  S.$ )z`
Return a dict containing only converter and takes_self -- the rest gets
computed when loading.
©rC   r½  r   r5  r    s    r"   r  ÚConverter.__getstate___  s%   € ð Ÿ™ØŸ/™/Ø×+Ñ+ñ
ð 	
r%   c                ó(   • U R                   " S0 UD6  g)z
Load instance from state.
Nr   r  )r!   r¤  s     r"   r  ÚConverter.__setstate__j  s   € ð 	�ŠÑ˜Ór%   )r  rÀ  rC   r   r½  N)r   rŒ   r¶  rŒ   )r   rŒ   rš  rŒ   r¶  rŒ   )r)   r*   r+   r,   r-   rb  r=  ro  r¿  rŸ  r  r  r0   r   r%   r"   r�  r�    s>   † ñð(€Ið 16À5õ 9ð2 ó/ó ð/ô\ò"	
õr%   r5  c                ó  ^• [         R                  " SU 5      n [        U[        5      (       a  UnOC[        U[        [
        45      (       a  U Vs0 s H  of[        5       _M     nnOSn[        U5      eUR                  SS5      nUR                  SS5      n	UR                  SS5      n
0 mUb  TR                  U5        Ub  UTS'   U	b  U	TS'   U
b  U
TS'   [        R                  " X0 U4S j5      n[        R                  " [        [        5         [         R"                  " S5      R$                  R'                  S	S
5      Ul        SSS5        UR                  SS5      n[+        UUR'                  S5      UR'                  S5      S5      u  US'   US'   [-        SSU0UD6" U5      nUR/                  5        VVs0 s H   u  pïUR0                  c  M  XïR0                  _M"     snnUl        U$ s  snf ! , (       d  f       N²= fs  snnf )aš  
A quick way to create a new class called *name* with *attrs*.

.. note::

    ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define`
    which means that it doesn't come with some of the improved defaults.

    For example, if you want the same ``on_setattr`` behavior as in
    `attrs.define`, you have to pass the hooks yourself: ``make_class(...,
    on_setattr=setters.pipe(setters.convert, setters.validate)``

.. warning::

    It is *your* duty to ensure that the class name and the attribute names
    are valid identifiers. ``make_class()`` will *not* validate them for
    you.

Args:
    name (str): The name for the new class.

    attrs (list | dict):
        A list of names or a dictionary of mappings of names to `attr.ib`\
        s / `attrs.field`\ s.

        The order is deduced from the order of the names or attributes
        inside *attrs*.  Otherwise the order of the definition of the
        attributes is used.

    bases (tuple[type, ...]): Classes that the new class will subclass.

    class_body (dict):
        An optional dictionary of class attributes for the new class.

    attributes_arguments: Passed unmodified to `attr.s`.

Returns:
    type: A new class with *attrs*.

.. versionadded:: 17.1.0 *bases*
.. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained.
.. versionchanged:: 23.2.0 *class_body*
.. versionchanged:: 25.2.0 Class names can now be unicode.
ÚNFKCz(attrs argument must be a dict or a list.r  Nr  r=  c                ó&   >• U R                  T5      $ r5   )rC  )r�  r~   s    €r"   r´   Úmake_class.<locals>.<lambda>Î  s   ø€ ¸¿	¹	À$¼r%   r
   r)   Ú__main__r@   rF   rH   TrÐ   r   )ÚunicodedataÚ	normalizerQ   r"  rR   rS   rY   rM   ÚpoprC  rÙ  Ú	new_classrX  rY  rZ  rN   rd  Ú	_getframeÚ	f_globalsr°   r*   r  r  rÄ   r:   rˆ   )rž   rƒ   ÚbasesÚ
class_bodyÚattributes_argumentsr‰  r§   rX   r‘  r“  Ú	user_initr…  r@   r”   rs  rt  r~   s                   @r"   Ú
make_classrH  †  sï  ø€ ô` × Ò  ¨Ó.€Dä�%œ×ÑØ‰Ü	�EœD¤%˜=×	)Ñ	)Ù).Ó/ª A”v“x’K©ˆÐ/ˆà8ˆÜ˜‹nÐà�|‰|Ð0°$Ó7€HØ—‘Ð2°DÓ9€IØ—‘˜Z¨Ó.€Ià€DØÑØ�‰�JÔØÑØ%-ˆÐ!Ñ"ØÑØ&/ˆÐ"Ñ#ØÑØ$ˆˆZÑä�OŠO˜D¨Ô-GÓH€Eô 
×	Ò	œ^¬ZÕ	8ÜŸ=š=¨Ó+×5Ñ5×9Ñ9Ø˜
ó
ˆÔ÷ 
9ð ×
"Ñ
" 5¨$Ó
/€Cô 	"ØØ× Ñ  Ó&Ø× Ñ  Ó)Øó		ñØ˜TÑ"Ø˜WÑ%ô Ñ
8�xÐ
8Ð#7Ò
8¸Ó
?€Cð 'Ÿn™nÔ.ôÚ.‘d�a°!·&±&‹	ˆ�6‰6Š	Ñ.ò€CÔð €Jùò_ 0÷2 
9Õ	8üó&s   ÁG0Ä6G5Æ>HÇHÇ5
H)r.  r6  c                  ó,   • \ rS rSrSr\" 5       rS rSrg)Ú_AndValidatoriñ  z*
Compose many validators to a single one.
c                ó<   • U R                    H  nU" XU5        M     g r5   )Ú_validators)r!   rÿ   r»   rö   rt  s        r"   r  Ú_AndValidator.__call__ù  s   € Ø×!Ô!ˆAÙˆd˜%Ö ò "r%   r   N)	r)   r*   r+   r,   r-   rY   rL  r  r0   r   r%   r"   rJ  rJ  ñ  s   † ññ “(€Kõ!r%   rJ  c                 ó¦   • / nU  H6  nUR                  [        U[        5      (       a  UR                  OU/5        M8     [        [	        U5      5      $ )zø
A validator that composes multiple validators into one.

When called on a value, it runs all wrapped validators.

Args:
    validators (~collections.abc.Iterable[typing.Callable]):
        Arbitrary number of validators.

.. versionadded:: 17.1.0
)rç   rQ   rJ  rL  rS   )Ú
validatorsrÑ  r>   s      r"   rU   rU   þ  sM   € ð €DÛˆ	Ø�‰ä˜)¤]×3Ñ3ð ×!Ò!à�ö	
ñ  ô œ˜t›Ó%Ð%r%   c                 óø  ^ • [        S T  5       5      nU(       a  U 4S jnOU 4S jnT (       d)  [        S5      nUR                  R                  X3S.5        O�[	        T S   5      R                  5       nU(       a  XBR                  S'   T S   n[        (       d!  [        U[        5      (       a  UR                  n[	        U5      R                  5       nU(       a  XbR                  S	'   U(       a  [        US
S
S9$ U$ )aa  
A converter that composes multiple converters into one.

When called on a value, it runs all wrapped converters, returning the
*last* value.

Type annotations will be inferred from the wrapped converters', if they
have any.

    converters (~collections.abc.Iterable[typing.Callable]):
        Arbitrary number of converters.

.. versionadded:: 20.1.0
c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr5   ©rQ   r�  )rº   Úcs     r"   r¼   Úpipe.<locals>.<genexpr>%  s   é € ÐGºJ°qœ* Q¬	×2Ð2ºJùs   ‚c                óf   >• T H)  n[        U[        5      (       a	  U" XU5      OU" U 5      n M+     U $ r5   rR  )rð  rÿ   rÍ  rS  Ú
converterss       €r"   Úpipe_converterÚpipe.<locals>.pipe_converter)  s5   ø€ Û�ä+5°a¼×+CÑ+C‘A�c Ô'ÉÈ3Ëò ñ  ð
 ˆJr%   c                ó*   >• T H  nU" U 5      n M     U $ r5   r   )rð  rS  rV  s     €r"   rW  rX  3  s   ø€ Û�Ù˜“f’ñ  ð ˆJr%   ÚA)rð  r¶  r   rð  re   r¶  Tr!  )r  r	   rˆ   rC  r   r*  r   rQ   r�  r  r+  )rV  Úreturn_instancerW  rZ  ÚtÚlastr-  s   `      r"   rT   rT     sÒ   ø€ ô  ÑG¹JÓGÓG€Oæö	õ	ö ä�C‹LˆØ×&Ñ&×-Ñ-°aÑ.EÕFô ! ¨A¡Ó/×DÑDÓFˆÞØ45×*Ñ*¨5Ñ1à˜"‰~ˆßŠ|¤
¨4´× ;Ñ ;Ø—=‘=ˆDô " $Ó'×7Ñ7Ó9ˆÞØ79×*Ñ*¨8Ñ4æÜ˜°DÀdÑKÐKØÐr%   )Nr³  )
r^   rŒ   r_   údict[str, Any] | Noner`   úMapping[str, object] | Nonera   rŒ   r¶  r·  r5   )
r^   rŒ   ra   rŒ   r_   r^  rm   r_  r¶  zdict[str, Any])r{   rŒ   r|   z	list[str]r¶  r:   )r¶  z'tuple[list[Attribute], dict[str, type]])r¶  r‚   )T)NNNNNNNFFTFFFFFNNFFNNNTNT)r”   r:   r:  rŒ   r¶  rŒ   )
r”   r:   rƒ   r„   r±  r(  r²  r(  r¶  útuple[str, dict])r”   r:   rƒ   r„   )rƒ   rR   r¶  r`  )r¶  r`  )NN)r¶  útuple[str, dict, dict]r¯  r°  )r   rŒ   rö   rŒ   r›  r(  r¶  rŒ   )r±  r(  r.  r(  r¥   r†   )rƒ   r„   r#  r(  r!  r(  rÁ  r(  r’  r(  rÂ  r(  rÃ  r(  r¥   r†   r#  r(  r–  r(  r•  r(  rÄ  rŒ   r¶  ra  )rž   rŒ   r¶  rŒ   )nÚ
__future__r   rQ  rX  rå  r.   r)  rk  rj   rd  rÙ  r>  rM  Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r	   r³  r   r   r   r   r   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjectrô   rÍ   r¾  r�   rj  rÚ  rÛ  rW  rT   r0  r/  r.  r  r   r   Úintr2   rY   rc   rr   r€   r‚   r‘   r–   rª   r¬   rß   rì   r÷   rú   rŸ   r  r  rL   r  rƒ   r  r  rè   r¸  rW  rÞ  rß  rê  rs  rŒ  r�  rü   r‡  rŒ  rÄ  rœ  r¡  r£  r¥  r±  r�  rÏ   rÇ   rb  Ú_arž   rA   rV   rÉ   Ú_casrP   Ú_fr�  rH  rJ  rU   )rž   r§   s   00r"   Ú<module>rl     sª  ðõ #ã 
Û Û Û Û Û Û Û 
Û Û Û ç -Ý %ß +Ñ +÷ (Ñ '÷÷ ÷ó ð ×!Ñ!€Ø'Ð ðÐ ð )Ð à!×2Ò2°2Ó6Ð ñ ‹H€	à—l’l 7§?¡?°G×4DÑ4DÓEÐ ôˆt�y‰yô ð( ×
Ñ
€ðô(˜ô (ð" ØØ	ØØ	Ø	ØØ	ØØØØØ
ØØ
ôkðb )-Øð	 Øð à ð ð &ð ð ð	 ð
 
õ ð$ +/ð	 Øð àð ð !ð ð (ð	 ð
 õ ôF1ô.$�*ô $ò0ò"'ð#à,ô#òB%ð8}Eð ô}Eò@1òhò"ò7÷tD	ñ D	òNò8((ðX .2ôð6 Ø
ØØ	ØØ	Ø	Ø
ØØØØØØØØØ
ØØØØØØØØô3BðJ 
€ðò/ôðEØ	ðEØ%ðEØ/3ðEØAEðEàôEôPò	ô"òJ5*ôpô"6#ôrò0òf&ò:.ò$/ðB&ð ôB&ôJ3ð]Øð]Ø"ð]Ø48ð]ØENð]àô]ô)ð
WØð
WØ"ð
WØ48ð
WØENð
Wàô
Wð,/Øð,/Øð,/Ø.=ô,/ð^EØðEàðEð ðEð ð	Eð
 ðEð ðEð ðEð #ðEð ðEð ðEð ðEð ðEð ôEôP÷nñ nð~ ×#Ò#óò $ˆñ ØØØØÐ(Ñ(ØØØØ�jÑ ØØÙ% dÓ+ôñ $ñ€ñ" ÙÙ�) 2Ñ&ÙÓ6š"�Q§¡¨+Ñ 5�q™"Ñ6ññ Ó
=’b�ŸF�F‹1 q§v¡v°Ñ'<�1‘bÑ
=ñ€	÷Qñ Qñh ™	 -Ó0Ó1€÷_
ñ _
ð` ×$Ò$óò %ˆñ ØØØØØØØØØØÙ% dÓ+ôñ %ñ€ñ" ‘Y˜z°Ñ6¸dÑC€
÷$'ñ $'ðh ×!Ò!óò "ˆñ ØØØØØØØØØØôñ "ñ€ñ  ‘G™I g°RÑ8ÀÑCÈ2Ñ
N€÷_ñ _ñ^ ;óò ;ˆñ ØØØØØØØØØØôñ ;ñ€ñ  Ù‰I�i rÑ*°"Ñ5¸Rñ€	ð �y¨TôdñV ˆT˜tÑ$÷	!ð 	!ó %ð	!ò&ó.9ùòOùò( 7ùâ
=ùòz	ùòvùòjs6   É	&OÊ O!ÊO!Ê%O&
Ê=O&
ËO&
Ì
 O+ÍO0ÎO5