403Webshell
Server IP : 178.105.222.151  /  Your IP : 216.73.216.38
Web Server : nginx/1.28.3
System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/attr/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/attr/__pycache__/_make.cpython-314.pyc
+
��Ci͖���^RIHt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RI	t	^RI
t
^RIt^RIt^RI
HtHt^RIHt^RIHtHtHt^RIHtHtHt^RIHtHtHtHtHtHt^RI H!t!H"t"H#t#H$t$]%PLt'R	t(Rct)R
t*]
PV!/4t,]%!4t-]P\!]P^]P`4t1!RR]Pd4t3]3Pht4!R
R]54t6]4RRRRRRRRRRRRRR3Rlt7RdRRllt8ReRRllt9RRlt:!RR]4t;Rt<Rt=RRlt>Rt?RRlt@R tAR!tBR"tCR#tD!R$R%4tER&tFR'tGRfR(ltHRgR*ltI]ItJR+tKR,R-ltLR.R/ltMR0R1ltNR2tOR3R4ltPR5tQReR6ltRR7R8ltSRhR9ltTR:tUR;tVR<t0R=tWR>R?ltXR@RAltYRBRCltZRDRElt[RFRGlt\RHRIlt]RJRKlt^RLRMlt_!RNRO4t`]`P�Uu.uFp]`!V]4RRRRR)VRP8gRR)]_!V4RQ7NK!	uptb]N!]R!]T!]`]bRR7]bUu.uFqP�RS8wgKVNK	upRR7]bUu.uF+qP�'gKVP�RS8wgK)VNK-	upRR7t`!RTRU4te]R!]T!]e44te!RVRW4tf]fP�Uu.uFp]`!V]4RRRRR)RRR)]_!V4RQ7NK	uptg]R!]T!]f]gRR7]gRR7tf!RXRY4th]hP�Uu.uFp]`!V]4RRRRR)RRR)RZ7
NK	upti]N!]R!]T!]h]iRR7]iRR7]iRR7th!R[R\4tjRiUu.uFp]`!V]4RRRRR)RRR)RZ7
NK	upti]N!]R!]T!]j]iRR7]iRR7]iRR7tj]%3R3R]ltk]I!RRR^7!R_R`44tlRatmRbt.R#uupiuupiuupiuupiuupiuupi)j�)�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�_attrs_cached_hashc�H�]tRt^>tRt]P!4tRtRt	Rt
R#)�_Nothinga.
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	��R#)�NOTHING���selfs&�,/usr/lib/python3/dist-packages/attr/_make.py�__repr__�_Nothing.__repr__Ks���c	��R#�Frrs&r�__bool__�_Nothing.__bool__Ns��r"rN)�__name__�
__module__�__qualname__�__firstlineno__�__doc__�enum�autorr r%�__static_attributes__rr"rrr>s����i�i�k�G��r"rc�4�]tRt^ZtRt]!R4R3RltRtR#)�_CacheHashWrapperac
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.
Nc	��W3#�Nr)r�_none_constructor�_argss&&&r�
__reduce__�_CacheHashWrapper.__reduce__fs�� �'�'r"r)r'r(r)r*r+�typer5r.rr"rr0r0Zs��	�,0��:�R�(�(r"r0Tc�x�\W;VR4wr�ppVeVRJdVRJdRp\V4hV	eAV\JdRp\V4h\	V	4'gRp\V4h\V	4pVf/p\
V
\\34'd\P!V
!p
V'd&\
V\\34'd
\V!pV'd&\
V\\34'd
\V!p\R/RVbRVbR	VbR
RbRVbRVbR
VbRVbRVbRV
bRVbRVbRVbRVbRV
bRVb#)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�metadatar7�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=r>r?rAr7r@�factoryrBrCrErGrHrDrF�msgs&&&&&&&&&&&&&&&   r�attribrVjs���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
�,�V^8�dQhRRRRRRRRRR	/#)
��script�str�globs�dict[str, Any] | None�locs�Mapping[str, object] | None�filename�return�Noner)�formats"r�__annotate__rc�s:�� � �� � � �&� ��	 �

� r"c�6�\WR4p\WAV4R#)zO
Evaluate the script with the given global (globs) and local (locs)
variables.
�execN)�compile�eval)rYr[r]r_�bytecodes&&&& r�_compile_and_evalri�s���v��0�H���$�r"c
�,�V^8�dQhRRRRRRRRRR	/#)
rXrYrZr_r[r\�localsr^r`zdict[str, Any]r)rbs"rrcrc�s:�� � �� �� �!� �
(�	 �
� r"c���Vf/MTp^pTp\V4RVPR4V3p\PP	W4pW�8XdMVRRRVR2pV^,
pK[\WWA4V#)zH
Cache the script with _linecache_, compile it and return the _locals_.
NT�-�>���)�len�
splitlines�	linecache�cache�
setdefaultri)	rYr_r[rkr]�count�
base_filename�linecache_tuple�old_vals	&&&&     r�_linecache_and_compilery�s�����2�V�D�
�E��M�
���K�����d�#��	
���/�/�,�,�X�G���%��#�C�R�(�)��5�'��3��
��
���f�T�4��Kr"c�$�V^8�dQhRRRRRR/#)rX�cls_namerZ�
attr_namesz	list[str]r`r7r)rbs"rrcrc	s!��1�1�S�1�i�1�D�1r"c��VR2p/p\V4FwrEV3Rlp\V4W5&K	\V\3V4#)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��W,#r2r)r�is&&r�getter�&_make_attr_tuple_class.<locals>.getters	���7�Nr")�	enumerate�propertyr7rP)r{r|�attr_class_name�bodyr��	attr_namer�s&&     r�_make_attr_tuple_classr�	sO��"�
�*�-�O�
�D�!�*�-����	�#�6�*���.���%��4�0�0r"c�6�]tRtRt$R]R&R]R&R]R&RtR	#)
�_Attributesi r7�attrs�list[Attribute]�
base_attrs�dict[str, type]�base_attrs_maprN)r'r(r)r*�__annotations__r.rr"rr�r� s���K���#�#r"r�c��\V4pVPR4'dVPR4'dV^RpVP\4#)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.
)�'�"ro)rZ�
startswith�endswith�_CLASSVAR_PREFIXES)�annots&r�
_is_class_varr�&sK��
��J�E�
���
�#�#����z�(B�(B��a�������.�/�/r"c��WP9#)zJ
Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
)�__dict__)�cls�attrib_names&&r�_has_own_attributer�7s���,�,�&�&r"c��V^8�dQhRR/#)rXr`z'tuple[list[Attribute], dict[str, type]]r)rbs"rrcrc>s��#�#�,�#r"c���.p/p\VP^R4Fmp\VR.4FYpVP'gVPV9dK(VPRR7pVP
V4WCVP&K[	Ko	.p\4p\V4FCpVPV9dKVP^V4VPVP4KE	Wc3#)zI
Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
�__attrs_attrs__T��	inheritedro)
�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�"�.p/pVP^RFvp\VR.4FbpVPV9dKVPRR7pVP	VP4VPV4WCVP&Kd	Kx	W#3#)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�Tr�ro)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��V^8�dQhRR/#)rXr`r�r)rbs"rrcrc{s��uE�uE��uEr"c�ha�VPo\V4pVe\VP44pEM;VRJEdSP4UU	u0uFwr�V	P\
JgKVkK	p
pp	.p\
4pVP4Fpwr�\V
4'dKVPV4SPV\4pVP\
Jd\V4pVPW�34Kr	W�,
pV'd8\RRP\VV3RlR74,R,4hM#\RSP44RR7p\ P"p\$P&P(pVUUu.uF"wppV!VVVVJVPV44NK$	pppV'd*\+TVUu0uFq�P,kK	up4wppM(\/TVUu0uFq�P,kK	up4wppV\$P&P0JdAVUu.uFq�P3RR	7NK	ppVUu.uFq�P3RR	7NK	ppVV,pVe\5V!VV44pR
pRV4FNpVRJd&VP6\JdRV:2p\9V4hVR
JgK6VP6\JgKLRpKP	VFFpVP:'dK\<P?V4!R
\AVP,44KH	VUu.uFq�P,NK	pp\CVPDV4p\GV!V4VV4#uup	piuuppiuupiuupiuupiuupiuupi)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�:<�SPV4P#r2)�get�counter)�n�cds&�r�<lambda>�"_transform_attrs.<locals>.<lambda>�s���b�f�f�Q�i�6G�6Gr")�key�.c3�X"�TF wrVP\JgKW3x�K"	R#5ir2)�	__class__rS)�.0r��attrs&  r�	<genexpr>�#_transform_attrs.<locals>.<genexpr>�s)���
�",�J�D��>�>�]�2����",�s�*�*c�(�V^,P#)�)r�)�es&rr�r��s��!�A�$�,�,r")rBFc3�l"�TF*qPRJgKVPRJgK&Vx�K,	R#5i)FN)r?rB�r�r�s& rr�r��s(���
M��A�&�&��"5�a�!�)�)�u�:L�a�a��s�4�
4�
4zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: rH)$r�rrO�itemsr�rSr�r�r�r�rrVr�r�join�sorted�	Attribute�from_counting_attr�
ClassProps�KeywordOnly�NOr�r�r��FORCEr�rPr:rKrH�_OBJ_SETATTR�__get__�_default_init_alias_forr�r'r�)r��these�auto_attribsrB�collect_by_mro�field_transformer�anns�ca_listr�r��ca_names�annot_namesr�r7r��unannotated�fca�no�ca�	own_attrsr�r�r��had_defaultrUr|�
AttrsClassr�s&&&&&&                     @r�_transform_attrsr�{sm���$

���B��C� �D����u�{�{�}�%��	��	�!�h�h�j�
�(�
���~�~��.�
�D�(�	�
�
���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��$��'��U�3�4���K�
M��
M���$��1�9�9��#7�A�BC�AF�G�C��S�/�!��%��A�I�I�W�$<��K�
N����w�w�w�� � ��#�G�-D�Q�V�V�-L�M��#(�(�%�Q�&�&�%�J�(�'����j�A�J��z�%�(�*�m�D�D��{
��L��-��-��@��A��>)s0�N�/N�"(N�N
�N 
�N%�(N*�N/c��.ROpVeVPR4MVP.R
O4VPRR.4\VR4pRVR\PRV/p\RP
V4WER	V/R
7R,#)�def wrapper(_cls):z,         return original_getattr(self, item)z    return __getattr__z__getattr__ = wrapper(_cls)r��cached_properties�_cached_setattr_get�original_getattr�
�_cls)rk�__getattr__)	r�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 result)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))r��extend�_generate_unique_filenamer�r�ryr�)r�r�r��lines�unique_filename�globs&&&   r�_make_cached_property_getattrr��s���
�E��#�
���:�	
�	���	
�	
�
�L�L�$�)�	
��0��Y�?�O�	�.��|�3�3��,��D�"��	�	�%��/���
����r"c�x�\V\4'd VR9d\PWV4R#\h)z,
Attached to frozen classes as __setattr__.
N)�	__cause__�__context__�
__traceback__�__suppress_context__�	__notes__)rN�
BaseException�__setattr__r�rr��values&&&r�_frozen_setattrsr's8���$�
�&�&�4�4�,�	�!�!�$�e�4��
�r"c�v�\V\4'dVR9d\PW4R#\h)z,
Attached to frozen classes as __delattr__.
N)r�)rNr��__delattr__r)rr�s&&r�_frozen_delattrsr8s/���$�
�&�&�4�>�+A��!�!�$�-��
�r"c�2�VwpTPp\	T4pTFDpTP
'gKTPpTPpY�9gK7\Y'4Y&KF	T!R/TB# \dR\T4R2p\T4Rhi;i)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)	rKrprJr��fieldsr?r�rHr�)	�args�changes�instrUr�r�r�r��	init_names	*,       rr�r�Cs���J'�����.�.�C��3�K�E�
���v�v�v���F�F�	��G�G�	��#�!(��!9�G��
��>��>���!�'�8��T���;�O�	���n�$�&�	'�s�A/�/'Bc��]tRtRtRtRtRRltRtRRltRt	R	t
R
tRtRt
R
tRtRtRtRtRtRtRtRtRtRRltRRltRtR#)�
_ClassBuilderi}z 
Iteratively build *one* class.
c�(�V^8�dQhRRRRRRRR/#)rXr�r7r��bool�propsr��has_custom_setattrr)rbs"rrc�_ClassBuilder.__annotate__�s>��cG�cG�
�cG��	cG�
�cG�!�
cGr"c	���\VVVVPVPVP4wrgpWnVP
'd\
VP4M/VnW`n	VU	u0uFq�PkK	up	VnW�n\;QJd.RV4FNK	5M
!RV44VnVP
VnVP VnVP$VnVP(\*P,P.JVn\3\5VRR44VnRVnVP6'd@VP:p
\<P>!V
4p\AVPB4^8�Vn\3\5VRR44Vn"\3V4'*Vn#VPHVn%VPLVn'WPn(RVn)VPVPR&W@PR&VP 'd/\TVPR&\VVPR&RVn)M�VPN\X\ZP\\ZP^39d�R;r�VF7p	V	P`eRpV	PbeRp
V'gK-V
'gK7M	VPN\X8XdV'g	V
'dOVPN\ZP\8Xd	V'd(VPN\ZP^8XdV
'gR	Vn'VPd'd.VPg4wVPR
&VPR&.Vn4RVn5\mVPR4'd\mVPR
4'gVPnVn8R	#VPrVn8R	#uup	i)c3�8"�TFqPx�K	R#5ir2�r�r�s& rr��)_ClassBuilder.__init__.<locals>.<genexpr>�s��� 7��A����s��__attrs_pre_init__F�__attrs_post_init__r��__attrs_props__r�rTN�__getstate__�__setstate__r(r)):r�rB�collected_fields_by_mror�r��
is_slotted�dictr��	_cls_dict�_attrsr��_base_names�_base_attr_maprP�_attr_names�_slots�	is_frozen�_frozen�has_weakref_slot�
_weakref_slot�hashabilityr��Hashability�HASHABLE_CACHED�_cache_hashr
r��
_has_pre_init�_pre_init_has_argsr�inspect�	signaturerp�
parameters�_has_post_init�_delete_attribs�is_exception�_is_exc�on_setattr_hook�_on_setattr�_has_custom_setattr�_wrote_own_setattrrr�_DEFAULT_ON_SETATTRr�validate�convertr;r@�added_pickling�_make_getstate_setstate�_script_snippets�_repr_added�hasattr�_add_method_dunders_safe�_add_method_dunders�_add_method_dunders_unsafe)rr�r�r�rrr�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���&�� �5� 7�� 7�5�5� 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�0O3c	�6�RVPPR2#)z<_ClassBuilder(cls=z)>)r�r'rs&rr �_ClassBuilder.__repr__�s��$�T�Y�Y�%7�%7�$8��;�;r"c��V^8�dQhRR/#)rXr`rar)rbs"rrcrs��'�'��'r"c
�X�RPVPUu.uFq^,NK
	up4p/pVPFwrEpVPV4K	\V\	VP
R4V4pVPFwrGV!VPV4K	R#uupi)z-
Evaluate any registered snippets in one go.
r��methodsN)r�r=�updateryr�r�r)r�snippetrYr[�_�
snippet_globsr]�hooks&       r�_eval_snippets�_ClassBuilder._eval_snippetss������d�6K�6K�L�6K�7�A�J�J�6K�L�M����#'�#8�#8��A�a��L�L��'�$9�&��%�d�i�i��;��
���/�/�J�A�q������&�0��Ms�B'c
�~�VP4VPRJd7VP4p\P!V4VP
nM2VP4p\'d\P!V4p\VRR4'd"RVP9dVP4V#)zk
Finalize class based on the accumulated configuration.

Builder cannot be used after calling this method.
T�__attrs_init_subclass__N)rTr"�_create_slots_class�weakref�refr��__attrs_base_of_slotted__�_patch_original_classr
�abc�update_abstractmethodsr�r�rW)rr�s& r�build_class�_ClassBuilder.build_classs���	
�����;�;�$���*�*�,�C�29�+�+�c�2B�D�I�I�/��,�,�.�C��|��0�0��5��

�C�2�D�9�9�)����=��'�'�)��
r"c
�H�VPpVPpVP'dlVPF[pW29gK\	W\
4\
JgK%\P!\4;_uu_4\W4RRR4K]	VPP4Fwr4\WV4K	VP'g8\	VRR4'd%RVnVP'g\ VnV# +'giK�;i)z1
Apply accumulated methods and return the class.
N�__attrs_own_setattr__F)r�rr1r!r��	_SENTINEL�
contextlib�suppress�AttributeError�delattrrr��setattrr7rbr6r�r�)rr��
base_namesr�r�s&    rr\�#_ClassBuilder._patch_original_class-s����i�i���%�%�
������(�(���*���9�5�Y�F�
$�,�,�^�<�<���*�=�<�)� �>�>�/�/�1�K�D��C�u�%�2�
�&�&�&�7��(�%�,
�,
�).�C�%��+�+�+�".����
�#=�<�<�s�>D�D!c
�&
�VPP4UUu/uF*wrV.\VP4ORNRN59gK(WbK,	ppp\	\
R4'd!\
P!VP4VP'gbRVR&VP'gKVPPF0pVPPRR4'gK'\VR&M	/pRpVPP^R
FYpVPPRR4eRpTP\!VR	.4Uu/uFpV\!WG4bK	up4K[	\#VP$4pVPp	VP&'d5R\!VPR	R49dRV	9dV'g
V	R,
p	VP4UU
u/uF)wrz\)V
\*4'gKWzP,bK+	ppp
.pV'd�\/VP4p
VP4Fewr~W�3,
p	W7VP1V4\2P4!V4P6pV\2P8P:JgKaW�V&Kg	VPR
4pVeVP1V4\=VVVP4VR
&V	Uu.uF
qwV9gKVNK	ppVP4UUu/uFwppVV9gKVVbK	pppVUu.uF
qwV9gKVNK	ppVPV4VP>'dVP1\@4\V4VR	&VPPBVR&\EVP4!VPPFVPPV4p\HPJ!VPPM4V4F�p\)V\N\P34'd\!VPRRR4pM;\)V\T4'd\!VPVRR4pM
\!VRR4pV'gK|VF-pVPXVPJpV'd
VVn,K-K/	K�	V#uuppiuupiuup
piuupiuuppiuupi \ZdKfi;i)z<
Build and return a new class with a `__slots__` attribute.
r��__weakref__�_clear_type_descriptorsFrbr�NT�	__slots__r�r)�__closure__ror)rl).rr�rPr!r?�sysrmr�r7r6�	__bases__r�r�r�r�rOr�r�rr&rNr�funcrr�r-r.�return_annotation�	Parameter�emptyr�r*�_HASH_CACHE_FIELDr)r7r'�	itertools�chain�values�classmethod�staticmethod�__func__r��fget�
cell_contentsrK)r�k�vr�r��existing_slots�weakref_inheritedr�ri�names�cached_propr��&additional_closure_functions_to_update�class_annotationsrr�
annotationr��
slot_names�slot�slot_descriptor�reused_slotsr��item�
closure_cells�cell�matchs&                         rrX�!_ClassBuilder._create_slots_classQs������,�,�.�
�.����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�d�u�
�G�*8�)=�)=�)?�
�)?�%��o��z�!�
"�D�/�!�)?�	�
�
(2�N�z�t��5M�d�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+�<S1�	S1�$S6�5S6�S<�S<�-T�T�Tc	�a�\SPV4wr#V3RlpSPPW#V34RSnS#)c�><�SPVR,4VR&R#)r N�rA��cls_dictr[rs&&�r�_attach_repr�,_ClassBuilder.add_repr.<locals>._attach_repr�s���#'�#;�#;�E�*�<M�#N�H�Z� r"T)�_make_repr_scriptrr=r�r>)r�nsrYr[r�sf&   r�add_repr�_ClassBuilder.add_repr�sC���)�$�+�+�r�:�
��	O�	
���$�$�f�\�%B�C�����r"c	��VP'gRp\V4hRpVPV4VPR&V#)z3__str__ can only be generated if a __repr__ exists.c�"�VP4#r2�r rs&r�__str__�&_ClassBuilder.add_str.<locals>.__str__�s���=�=�?�"r"r�)r>rKrAr)rrUr�s&  r�add_str�_ClassBuilder.add_str�sB������G�C��S�/�!�	#�%)�$<�$<�W�$E����y�!��r"c
�aa�\;QJd.RVP4FNK	5M!RVP44oV3RlpVPoVV3RlpW3#)z6
Create custom __setstate__ and __getstate__ methods.
c3�6"�TFqR8wgKVx�K	R#5i)rlNr)r��ans& rr��8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>�s���!
�)�2�=�-@�B�B�)�s��
c�D<�SUu/uFq\W4bK	up#uupi��!
Automatically created by attrs.
�r�)rr��state_attr_namess& �r�slots_getstate�=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate�s(���;K�K�:J�$�'�$�-�-�:J�K�K��Ks�c�<�\PV4p\V\4'd\	SV4F
wr4V!W44K	M SFpW19gKV!W1V,4K	S'dV!\
R4R#R#)r�N)r�r�rNrP�ziprv)r�state�_ClassBuilder__bound_setattrr�r��hash_caching_enabledr�s&&   ��r�slots_setstate�=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstatess���+�2�2�4�8�O��%��'�'�$'�'7��#?�K�D�#�D�0�$@�-�D��}�'��D�k�:�-�$�� 1�4�8�$r")rPr!r*)rr�r�r�r�s&  @@rr<�%_ClassBuilder._make_getstate_setstate�s`���
!�5�!
��)�)�!
�5�5�!
��)�)�!
�
��	L� $�/�/��	9�,�-�-r"c	�$�RVPR&V#)N�__hash__)rrs&r�make_unhashable�_ClassBuilder.make_unhashables��%)����z�"��r"c	��a�\SPSPSPSPR7wrRV3RllpSP
P
WV34S#)��frozen�
cache_hashc�$�V^8�dQhRRRRRR/#)rXr�rr]r`rar)rbs"rrc�,_ClassBuilder.add_hash.<locals>.__annotate__*s&��	N�	N�$�	N�d�	N�t�	Nr"c�><�SPVR,4VR&R#)r�Nr�)r�r]rs&&�r�attach_hash�+_ClassBuilder.add_hash.<locals>.attach_hash*s���#'�#;�#;�D��<L�#M�H�Z� r")�_make_hash_scriptr�rr$r*r=r�)rrYr[r�sf   r�add_hash�_ClassBuilder.add_hash"sY���)��I�I��K�K��<�<��'�'�	
�
��	N�	N�	
���$�$�f�[�%A�B��r"c	�baa�\SPSPSPSPSP
SPSPSPSPSPSPRR7wroVV3RlpSPPWV34S#)F��
attrs_initc�P<�VR,pSVnSPV4VR&R#)rHN�r�rA�r�r[r?rrs&& ��r�_attach_init�,_ClassBuilder.add_init.<locals>._attach_initAs*�����$�D�#.�D� �#'�#;�#;�D�#A�H�Z� r"��_make_init_scriptr�rr+r,r0r$r"r*r r3r5r=r�)rrYr[r�rsf   @r�add_init�_ClassBuilder.add_init1s����%6��I�I��K�K�����#�#�����L�L��K�K��������L�L�����
&
�"��{�	B�
	
���$�$�f�\�%B�C��r"c	�D�VPR4VPR&V#)c��\V3/VB#r2)r�)rrs&,rr��+_ClassBuilder.add_replace.<locals>.<lambda>Ls��F�4�$;�7�$;r"�__replace__)rArrs&r�add_replace�_ClassBuilder.add_replaceJs%��(,�(@�(@�;�)
����}�%��r"c	��\;QJd.RVP4FNK	5M!RVP44VPR&R#)c3�"�TF9pVP'gKVP'dK+VPx�K;	R#5ir2)r?rBr�)r��fields& rr��/_ClassBuilder.add_match_args.<locals>.<genexpr>Qs0���1
�$���z�z�
�"'�-�-�
�E�J�J�$�s�A�A�A�__match_args__N)rPrrrs&r�add_match_args�_ClassBuilder.add_match_argsPs>��+0�5�1
����1
�5�5�1
����1
�,
����'�(r"c	�baa�\SPSPSPSPSP
SPSPSPSPSPSPRR7wroVV3RlpSPPWV34S#)Tr�c�P<�VR,pSVnSPV4VR&R#)�__attrs_init__Nr�r�s&& ��r�_attach_attrs_init�8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initgs,����)�*�D�#.�D� �)-�)A�)A�$�)G�H�%�&r"r�)rrYr[r�rsf   @r�add_attrs_init�_ClassBuilder.add_attrs_initWs����%6��I�I��K�K�����#�#�����L�L��K�K��������L�L�����
&
�"��{�	H�
	
���$�$�f�5G�%H�I��r"c	�a�SPp\SP4wr#V3RlpSPP	W#V34\
VR&S#)c�><�SPVR,4VR&R#)�__eq__Nr�r�s&&�r�
_attach_eq�(_ClassBuilder.add_eq.<locals>._attach_equs���!%�!9�!9�%��/�!J�H�X�r"�__ne__)r�_make_eq_scriptrr=r�r�)rr�rYr[r�sf    r�add_eq�_ClassBuilder.add_eqpsK���
�^�^��'����4�
��	K�	
���$�$�f�Z�%@�A���8���r"c	�a�SPpV3Rl\SPSP44wVR&VR&VR&VR&S#)c3�F<"�TFpSPV4x�K	R#5ir2r�)r��methrs& �rr��*_ClassBuilder.add_order.<locals>.<genexpr>�s'����B
�;��
�$�$�T�*�*�;�s�!�__lt__�__le__�__gt__�__ge__)r�_make_orderr�r)rr�sf r�	add_order�_ClassBuilder.add_order~sL���
�^�^��B
�#�D�I�I�t�{�{�;�B
�>��8��b��l�B�x�L�"�X�,�
�r"c	�a�/oVPFSpVP;'g
VPpV'gK-V\PJgKCW3SVP
&KU	S'gV#VP'dRp\V4hV3RlpRVPR&VPV4VPR&RVn
V#)z7Can't combine custom __setattr__ with on_setattr hooks.c�p<�SV,wr4V!WV4p\WV4R# \dTpLi;ir2)�KeyErrorr�)rr��valr�rS�nval�sa_attrss&&&   �rr��._ClassBuilder.add_setattr.<locals>.__setattr__�sA���
*�"�4�.����D�S�)����T�*���
���
�s�%�
5�5Trbr�)rrGr5r�NO_OPr�r6rKrrAr7)rr�rGrUr�r�s&    @r�add_setattr�_ClassBuilder.add_setattr�s���������A����9�9��)9�)9�J��z�j��
�
�=�#$�=����� ��
��K��#�#�#�K�C��S�/�!�	+�37����.�/�(,�(@�(@��(M����}�%�"&����r"c� �V^8�dQhRRRR/#�rX�methodrr`r)rbs"rrcr�s������h�r"c
���VPPVnVPPRVP2VnRVPPR2VnV#)z0
Add __module__ and __qualname__ to a *method*.
r��$Method generated by attrs for class )r�r(r)r'r+�rrs&&rrB�(_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� �V^8�dQhRRRR/#rr)rbs"rrcr�s��
�
�x�
�H�
r"c
�D�\P!\4;_uu_4VPPVnRRR4\P!\4;_uu_4VPP
RVP2VnRRR4\P!\4;_uu_4RVPP
R2VnRRR4V# +'giL�;i +'giLo;i +'giT#;i)z<
Add __module__ and __qualname__ to a *method* if possible.
Nr�r)rdrerfr�r(r)r'r+r	s&&rr@�&_ClassBuilder._add_method_dunders_safe�s����
 �
 ��
0�
0� $�	�	� 4� 4�F��1��
 �
 ��
0�
0�%)�Y�Y�%;�%;�$<�A�f�o�o�=N�"O�F��1��
 �
 ��
0�
0�C�D�I�I�DZ�DZ�C[�[\�]�F�N�1��
�1�
0��1�
0��1�
0��
�s#�C(�)+C;�> D�(C8	�;D	�D	)rAr!rr rr*r�rr1r$r6r0r+r3r5r,r>r=r"r&r7N)r'r(r)r*r+rnrHr rTr_r\rXr�r�r<r�r�r�r�r�r�r�r�rrBr@r.rr"rrr}s����I�0cG�J<�'�$�2"�HM�^�	�'.�R�
��2�
��2���@�
�
r"rc��Ve%\VRJVRJ34'dRp\V4hVeW3#VfTpVfTpVRJdVRJdRp\V4hW3#)��
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.��anyrK)r=rCrE�
default_eqrUs&&&& r�_determine_attrs_eq_orderr�sx��
��3��$���T�0A�B�C�C�6����o�����x��
�z�
���}���	�U�{�u��}�=����o��
�9�r"c��Ve%\VRJVRJ34'dRp\V4hRpVeV!V4wrWW3#VfTRrqM
V!V4wrVfYr�M
V!V4wr(VRJdVRJdRp\V4hWW(3#)rNrc�:�\V4'dRTrW3#RpW3#)z(
Decide whether a key function is used.
TN)rL)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"FTrr)	r=rCrErrUr�cmp_keyrDrFs	&&&&     rrIrI�s���
��3��$���T�0A�B�C�C�6����o�����1�#�6����S�)�)�
�z���F�/��3�
���}��y�5�e�<���	�U�{�u��}�=����o��
�u�'�'r"c�t�VRJgVRJdV#Vf	VRJdV#VFp\W4'gKR#	V#)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�Taaaaaaaa	a
aaa
aaaaaaaaaa�Se!^RIpVP\R4^R7\WOVR4wooVeVo\	S\
\34'd\P!S!oVVVV
VVVVVVVVVVVVVVVV
VV	3RlpVfV#V!V4#)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*
NzQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.)�
stacklevelc
�
<�S;'g\V4pSRJ;'d\V\4pS
;'d
\VR4pV'dV'dRp\	V4hV'*;'d\VSS
R4p\PpV'dVPpM�SRJd"S'd
VPMVPpM�SRJdVPpM�SfsS
RJd \VR4'dVPpMZVRJd(VRJd"S'd
VPMVPpM-VRJdVPpMVPpM
Rp\V4h\PpS'd"S'd
VPMVPp	MVP p	\
R/RVbRVbRSbR	SbR
\VSS
R4bR\VSS
R4bRVbR
V'*;'d\VSS
R 4bRVbRSbRV	bRS!bRSbR\VSS
R!SR7bRSbRSbp
V
P"'gS'dRp\V4h\%VS SV
VR7pV
P&'dVP)S4V
P*'dVP-4V
P.'dVP14V
P2'dVP54S'gVP74V
P"'dVP94M*V
P:VPJdVP=4V
P>'dVPA4M%VPC4S'dRp\V4h\D'd#\VR4'gVPG4\H'd+S'd#\VR4'gVPK4VPM4#)"Tr�z/Can't freeze a class with a custom __setattr__.Fr�r9r2r#rr�
added_init�
added_repr�added_eq�added_orderingr'�added_match_argsrBr%�	added_strr;)r:r4r�zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.)r�rrzFInvalid value for cache_hash.  To use hash caching, init must be True.r�r�)r�r�r�rHr�)r�r�r�r�)rr)'�_has_frozen_base_class�
issubclassr�r�rKr r�r(�LEAVE_ALONEr)�HASHABLE�
UNHASHABLErJr�r��YESr��is_hashablerr%r�r)r�r&r�r'r�rr�r'r�r$r�r�rr�r
r�r_)"r�r#�is_exc�has_own_setattrrUrCr(r'r��kwor�builderr�r�auto_excr�r��eq_r��
force_kw_onlyr��getstate_setstater>r?rB�
match_argsrG�order_r<�repr_ns�slotsrZr��weakref_slots"&           ����������������������r�wrap�attrs.<locals>.wrap�s�����9�9�4�S�9�	��T�!�D�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�DeprecationWarningrrNrOrPrrQ)�	maybe_clsr�r<r<r=r>r?r=r�r>rZr�rBr�r6rCrErr�r9rGr�r:�unsafe_hashr8rAr?r7r;s&fff&ffffffffff&&ffffff&f  @@rr�r�'s������B����
�
��c�
��		�	
�,�C�U�D�A�K�C�������*�t�U�m�,�,��\�\�:�.�
�G%�G%�G%�G%�V�����	�?�r"c�&�VP\J#)zJ
Check whether *cls* has a frozen ancestor by looking at its
__setattr__.
)r�r)r�s&rr+r+3s��
�?�?�.�.�.r"c�$�V^8�dQhRRRRRR/#)rXr�r7�	func_namerZr`r)rbs"rrcrc;s!����4��C��C�r"c
�X�RVRVPR\VRVP4R2#)z>
Create a "filename" suitable for a function being generated.
z<attrs generated � r�r)rn)r(r�r')r�rHs&&rr�r�;s7��
�I�;�a����'7�q��3�����5�
6�a�	9�r"c
�,�V^8�dQhRRRRRRRRRR	/#)
rXr�r7r�r�r�r
r�r`�tuple[str, dict]r)rbs"rrcrcEs;��E�E�	
�E�%�E�/3�E�AE�E��Er"c�aaa	a
aa�\;QJd.RS4FNK	5M
!RS44oRp\\VR44o/o	RpRo
RoV'gVR,
pM$VR,
pVR,
pR	S
,o
SR
,
oV.oVVV	V
VV3RlpV'd�SPVR\R
2,4V'd9V!R\R2V^,4SPV^,R
,4MV!R\R2V^,4SPVR\2,4M	V!RV4RPS4pVS	3#)c3�"�TF8qPRJg#VPeK"VPRJgK4Vx�K:	R#5i)TN)r>rCr�s& rr��$_make_hash_script.<locals>.<genexpr>Hs/�����a�F�F�d�N�q�v�v��!�$�$�$�,���5�s�A�
A�
A�        r>zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(�)c	�<�SPW,S,VRS	R2,.4SF�pVP'dKRVPR2pVPSV&SPVRVRVPR2,4K_SPVRVPR2,4K�	SPVR,S,4R	#)
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
rP�,rQ�_key�(self.z),�
        self.�    N)r�rDr�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_lines`s����	�����)�+��8�I�;�a�0�0�
�	
��A��x�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"zif self.z	 is None:zobject.__setattr__(self, '�', �self.� = zreturn self.zreturn r�)rPr>r�r�rvr�)
r�r�r�r��tab�hash_defr_rYr[r[r\r]r^s
&f&&    @@@@@rr�r�EsY���
�E����E�E����
�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� �V^8�dQhRRRR/#)rXr�r7r�r�r)rbs"rrcrc�s����4���r"c�p�\WRRR7wr#\W#\VR4R7VR,VnV#)z
Add a hash method to *cls*.
Fr�r��r_)r�rir�r��r�r�rYr[s&&  r�	_add_hashrj�sA��&��5�U��M�F��� 9�#�z� J����$�C�L��Jr"c�R�VPV4pV\Jd\#V'*#)zR
Check equality and either forward a NotImplemented or
return the result negated.
)r��NotImplemented)r�other�results&& rr�r��s(��
�[�[��
�F�
������:�r"c� �V^8�dQhRRRR/#)rXr�rOr`rLr)rbs"rrcrc�s��"�"�4�"�$4�"r"c�h�VUu.uFqP'gKVNK	pp.ROp/pV'd�VPR4VF�pVP'dRRVPR2pVPW4&VPRVRVPRVRVPR2	4M+VPR	VPR
VP24WR,JgK�VR,R2VR&K�	VPR4MVPR
4RP	V4pWS3#uupi)z.
Create __eq__ method for *cls* with *attrs*.
z
    return  (rQrTrPrUz) == z(other.rQrVz
 == other.z andz    )z    return Truer�)zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedro)rCr�rDr�r�)r�r�r�r[rZrYs&     rr�r��s���&��1���Q�Q��E�&�
�E�
�E��
���_�%��A��x�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�aa�SUu.uFq"P'gKVNK	upoV3RloV3RlpV3RlpV3RlpV3RlpW4WV3#uupi)z1
Create ordering methods for *cls* with *attrs*.
c�<a�\;QJd.RV3RlS44FNK	5#!RV3RlS444#)z
Save us some typing.
c3�J"�TFwrV'd	V!V4MTx�K	R#5ir2r)r�r�r�s&  rr��6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>�s(���
��
���C��J�5�(��s�!#c3�h<"�TF'p\SVP4VP3x�K)	R#5ir2)r�r�rF)r�r��objs& �rr�rt�s(�����=B����a�f�f�%�q�{�{�3�U�s�/2)rP)rvr�sf�r�attrs_to_tuple�#_make_order.<locals>.attrs_to_tuple�sK����u�
��=B��
�u�	
�u�
��=B��
�
�	
r"c�f<�VPVPJdS!V4S!V48#\#r��r�rl�rrmrws&&�rr��_make_order.<locals>.__lt__��0����?�?�d�n�n�,�!�$�'�.��*?�?�?��r"c�f<�VPVPJdS!V4S!V48*#\#r�rzr{s&&�rr��_make_order.<locals>.__le__��0����?�?�d�n�n�,�!�$�'�>�%�+@�@�@��r"c�f<�VPVPJdS!V4S!V48�#\#r�rzr{s&&�rr��_make_order.<locals>.__gt__�r}r"c�f<�VPVPJdS!V4S!V48�#\#r�rzr{s&&�rr��_make_order.<locals>.__ge__�r�r")rE)r�r�r�r�r�r�r�rws&f     @rr�r��sK����)��1���Q�Q��)�E�	
������6�)�)��c
*s
�A
�A
c��Vf
VPp\V4wr#\W#\VR4R7VR,Vn\
VnV#)z-
Add equality methods to *cls* with *attrs*.
r�rh)r�r�rir�r�r�ris&&  r�_add_eqr�sN��
�}��#�#��#�E�*�M�F��� 9�#�x� H���x��C�J��C�J��Jr"c��V^8�dQhRR/#)rXr`rLr)rbs"rrcrcs��6#�6#�$4�6#r"c�T�\;QJd.RV4FNK	5M
!RV44pVUUUu/uFwr4qT\8wgKVR,VbK	pppp\VR&\VR&\VR&.pVF[wr4pV'd
RV,MRV,R,p	V\8XdV:R	V	:R
2M
V:R	V:RV	:R2p
VPV
4K]	R
P
V4pVfRpM	VR,pRRRRRRRRRRRRRVRVR2RR.p
R P
V
4V3#uupppi)!z;
Create the source and globs for a __repr__ and return it.
c3�"�TFPpVPRJgKVPVPRJd\MVPVP3x�KR	R#5i)FTN)r<r�r?r�s& rr��$_make_repr_script.<locals>.<genexpr>sD���"��A��6�6���	?����!�&�&�D�.�$�a�f�f�q�v�v�>��s�A�AA�_reprr
rfrrbzgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}r�z1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __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�)rPr<r
rfrr�r�)r�r��attr_names_with_reprsr��rrQr[�attribute_fragmentsr��accessor�fragment�
repr_fragment�cls_name_fragmentr�s&&            rr�r�sp��"�E�"��"�E�E�"��"���-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�D#�D#c��Vf
VPp\W!4wr4\W4\VR4R7VR,VnV#)z
Add a repr method to *cls*.
r rh)r�r�rir�r )r�r�r�rYr[s&&&  r�	_add_reprr�NsH��
�}��#�#��%�e�0�M�F��� 9�#�z� J����$�C�L��Jr"c���\V4pVf$\V\4'gRp\V4h\	VRR4pVf/Ve\	VRR4pVe	W0nV#V:R2p\
V4hV#)a
Return the tuple of *attrs* attributes for a class.

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

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:
    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.
N�Passed object must be a class.r��! is not an attrs-decorated class.)rrNr7rJr�r�r)r��generic_baserUr�s&   rrr]s���.$�C�(�L���J�s�D�$9�$9�.����n���C�*�D�1�E��}��#��L�*;�T�B�E�� �',�#�����8�9��"�3�'�'��Lr"c���\V\4'gRp\V4h\VRR4pVfV:R2p\	V4hVUu/uFq3P
VbK	up#uupi)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
r�r�Nr�)rNr7rJr�rr�)r�rUr�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	���\PRJdR#\VP4F1pVPpVfKV!W\WP44K3	R#)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_validatorsrr�r;r�r�)rr�r�s&  rr9r9�sI�����%�'��
�D�N�N�
#��
�K�K���=�
�d�w�t�V�V�,�-�$r"c�V�VPV4pT;'dRVP9#)z6
Check if the attribute name comes from a slot class.
rn)r�r�)�a_namer�r�s&& r�
_is_slot_attrr��s+���
�
�F�
#�C��.�.�;�#�,�,�.�.r"c��V^8�dQhRR/#)rXr`�tuple[str, dict, dict]r)rbs"rrcrc�s��B&�B&��B&r"c�H�V
RJ;'dV
\PJpV'dV'dRp
\V
4hT;'gTp.p/pVF�pVP'gVP\
JdK+VP
V4VVVP&VPeVRJdRp
\V
4hRpKpV'gKzVP\PJgK�RpK�	\TTTTTTTTT	TTV'dRMR4wpppVP\P9d;VP\PVP,P4VPR\
RV/4V'd\P VR&VVV3#)Nz$Frozen classes can't use on_setattr.Tr�rHr�	attr_dictr�)rrrKr?r:rr�r�rG�_attrs_to_init_scriptr(rp�modulesrOr�r�r�)r�r��pre_init�pre_init_has_args�	post_initr�r=r�r�r2�cls_on_setattrr��has_cls_on_setattrrU�needs_cached_setattr�filtered_attrsr�r�rYr[rs&&&&&&&&&&&&         rr�r��st��	�d�"�J�J�~�W�]�]�'J���$�4����o��%�/�/����N��I�
���v�v�v�!�)�)�w�.�����a� ��	�!�&�&���<�<�#���~�<�� ��o�%�#'� �
�
�A�L�L��
�
�$E�#'� �� "7���
���������&��J�
"��F�E�;��~�~����$�
���S�[�[����0�9�9�:�	�L�L�)�W�k�9�=�>��(4�';�';��#�$��5�+�%�%r"c�(�V^8�dQhRRRRRRRR/#�rXr�rZ�	value_var�has_on_setattrr
r`r)rbs"rrcrcs(��3�3��3��3�T�3�c�3r"c��RVRVR2#)zB
Use the cached object.setattr to set *attr_name* to *value_var*.
�
_setattr('rarQr)r�r�r�s&&&r�_setattrr�s���	�{�#�i�[��2�2r"c
�,�V^8�dQhRRRRRRRRRR/#�	rXr�rZr�r�r
r@�	Converterr`r)rbs"rrcrcs;��]�]��]�"�]�48�]�EN�]��]r"c�2�RVRVPW4R2#)z_
Use the cached object.setattr to set *attr_name* to *value_var*, but run
its converter first.
r�rarQ)�_fmt_converter_call�r�r�r�r@s&&&&r�_setattr_with_converterr�s&���	�{�#�i�&C�&C�I�&Y�%Z�Z[�\�\r"c�(�V^8�dQhRRRRRRRR/#)rXr�rZr�r�r
r`r)rbs"rrcrcs(��)�)�s�)�3�)��)��)r"c�:�V'd
\WR4#RVRV2#)zc
Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
relegate to _setattr.
Trbrc)r�)r�r�r�s&&&r�_assignr�s'��
��	�$�/�/�
�9�+�S���(�(r"c
�,�V^8�dQhRRRRRRRRRR/#r�r)rbs"rrcrc#s;��
W�
W��
W�"�
W�48�
W�EN�
W��
Wr"c�Z�V'd\WRV4#RVRVPW42#)z�
Unless *attr_name* has an on_setattr hook, use normal assignment after
conversion. Otherwise relegate to _setattr_with_converter.
Trbrc)r�r�r�s&&&&r�_assign_with_converterr�#s5���&�y�T�9�M�M�
�9�+�S��!>�!>�y�!T� U�V�Vr"c�$�V^8�dQhRRRRRR/#)rXr�r
r=r�r�r)rbs"rrcrc0s$��,/�,/��,/��,/�.=�,/r"c�~a�VRJd+VRJdR\\3#RV3RllpRV3RllpRVV3#R\\3#)z[
Determine the correct setter functions based on whether a class is frozen
and/or slotted.
Tc�(�V^8�dQhRRRRRRRR/#r�r)rbs"rrc�(_determine_setters.<locals>.__annotate__@s,��	>�	>��	>�'*�	>�<@�	>�
�	>r"c�P<�\VS4'd
\WV4#RVRV2#��_inst_dict['z'] = )r�r�)r�r�r�r�s&&&�r�
fmt_setter�&_determine_setters.<locals>.fmt_setter@s2����Y�
�6�6��	�n�E�E�!�)��E�)��=�=r"c
�,�V^8�dQhRRRRRRRRRR/#r�r)rbs"rrcr�HsA��	h�	h��	h��	h�!�	h�!�		h�
�	hr"c�~<�V'g\VS4'd
\WW#4#RVRVPW42#r�)r�r�r�)r�r�r�r@r�s&&&&�r�fmt_setter_with_converter�5_determine_setters.<locals>.fmt_setter_with_converterHsH�����y�-�!H�!H�.��.���"�)��E�)�2O�2O�PY�2e�1f�g�gr"r)z_inst_dict = self.__dict__)r�r�r�r�)r�r=r�r�r�s&&f  r�_determine_settersr�0s\�����~��D�=��x�!8�8�8�	>�	>�	h�	h�
,��%�
�	
��w�.�.�.r"c�L�V^8�dQhRRRRRRRRRRRRR	RR
RRRR
RRRRRRR/
#)rXr�r�r#r
r�
call_pre_initr��call_post_init�does_cache_hashr�r�r2r�r��method_namerZr`r�r)rbs"rrcrc_s���E�E��E��E��E��	E�
�E��
E��E�#�E�
�E��E��E��E��Er"c
��V'dR.M.pV	'dVPR4\WV4wr�pVPV
4.p.p.p.p/pRR/pVEF�pVP'dVPV4VPpVP
RJ;'g'VP
\PJ;'dT
pVPp\VP\4pV'dVPP'dRMRpVPe7\VP\4'g\VP4pMVPpVPRJEdV'd�\ VP3,pVeOVPV!VVRVR	2,VV44VPVVP#VP4&M$VPV!VVRVR	2,V44VPP$VV&EMtVeIVPV!VR
VR2VV44VPVVP#VP4&EM(VPV!VR
VR2V44EM	VP\&Jd�V'g�VRVR2pVP('dVPV4M"VPV4VPV4VeEVPV!VVVV44VPVVP#VP4&EMWVPV!VVV44EM<V'Ed�VR
2pVP('dVPV4M"VPV4VPV4VPRVR24\ VP3,pVe�VPRV!VVVV4,4VPR4VPRV!VVR,V,R	,VV4,4VPVVP#VP4&MfVPRV!VVV4,4VPR4VPRV!VVR,V,R	,V4,4VPP$VV&M�VP('dVPV4M"VPV4VPV4VeDVPV!VVVV44VPVVP#VP4&MVPV!VVV44VPRJgEKVVP*eVfVP*VV&EKzVfEK�VP,'gEK�VP,VV&EK�	V'd�\.VR&VPR4VFbpRVP,pRVP,pVPRVRVRVPR	24VPVV&VVV&Kd	V'dVPR4V'dBV'dV'dR\0R2p MR\0R2p M
R\0R2p VPV 4V'd.R P3R!V44p!VPR"V!R	24R#P3V4pR#P3V4pV'dqTV'dR#MRR$R#P3V42,
pR#P3R%V4U"u.uF
p"V"R&V"2NK	up"4p#TV'dR#MR,
pVV#,
pV'dV'd
R'VR	2V^&R(p$R)TRTR*V'dV$P3V4MR+R,2VV3#uup"i)-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.
zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)r`Nr�Fr�rQzattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:rWzelse:Trz#if _config._run_validators is True:�__attr_validator_�__attr_z(self, z, self.zself.__attrs_post_init__()r�z', None)r�z	'] = Nonerbz = NonerSc3�f"�TF'qP'gKRVP2x�K)	R#5i)rbN)r?r�r�s& rr��(_attrs_to_init_script.<locals>.<genexpr>E	s"���B�%�Q�6�6�(�%����x�(�%�s�1�1zBaseException.__init__(self, r�z*, c3�P"�TFqPR4^,x�K	R#5i)�=N)�split)r��kwas& rr�r�R	s���#N��#�I�I�c�N�1�$5�$5��s�$&r�zself.__attrs_pre_init__(z
    zdef z):
    �passr�)r�r�r�r;r�rGrrrHrNr:rM�
takes_selfr@r�r?�_INIT_FACTORY_PAT�_get_global_namerTrrBr7�_first_param_typerrvr�)%r�r#rr�r�r�r�r�r2r�r�r�r��extra_linesr�r�r�
pre_init_args�kw_only_args�attrs_to_validate�names_for_globalsrr�r�r��arg_name�has_factory�
maybe_selfr@�init_factory_name�arg�val_name�init_hash_cache�vals�kw_arg_name�pre_init_kw_only_args�NLs%&&&&&&&&&&&&                         rr�r�_sw��(.;�
(�)��E��
���
3�		
�:L��}�:�6�K�6�
�L�L���
�D��M��L������T�"�K�
���;�;�;��$�$�Q�'��F�F�	����T�1�
�
�
�L�L��
�
�-�D�D�2D�	�
�7�7�� ����G�4��*�q�y�y�/C�/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�y��#�#�C�(����C� ��$�$�X�.��$����-�!�8�^�Y����'�'�"�)�"<�"<�Q�V�V�"D�E����Z�	�8�^�L�M�
�[��J�h�'�C��y�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�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� �V^8�dQhRRRR/#)rXr�rZr`r)rbs"rrcrcg	s����#��#�r"c�$�VPR4#)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.
rQ)�lstriprs&rr�r�g	s���;�;�s��r"c�`�]tRtRtRtR
tRRltRt]RRRll4t	Rt
R	tR
tRt
RtR#)r�ir	a6
*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.
- ``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*

For the full version history of the fields, see `attr.ib`.
Nc	��\Y^;'gT
T;'gTR4wr�pp\PV4pV!RV4V!RV4V!RV4V!RV4V!RV
4V!RV4V!RV4V!RV4V!R	V4V!R
V4V!RV4T!RV	'd \P!\V	44M\4V!R
V
4V!RV4V!RV4V!RV4V!RV4R#)Tr�r:r;r<rCrDrErFr>r?r@rAr7rBr�rGrHN)rIr�r��types�MappingProxyTyper�_EMPTY_METADATA_SINGLETON)rr�r:r;r<r=r>r?r�rAr7r@rBrCrDrErFrGrH�
bound_setattrs&&&&&&&&&&&&&&&&&&& rrH�Attribute.__init__�	s��*(B����2�y�1�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�%r"c	��\hr2)rr�s&&&rr��Attribute.__setattr__�	s��!�!r"c�$�V^8�dQhRRRRRR/#)rXr�rZr�rSrBr
r)rbs"rrc�Attribute.__annotate__�	s$��
�
��
�)�
�48�
r"c	���VfVPpMVPeRVR2p\V4hT!TVPVPVPRVP
VPRVPTVPVPfTMVPVPVPVPVPVPVP4#)Nz>Type annotation and type argument cannot both be present for 'z'.F)r7rK�_default�
_validatorr<r>r?rAr@rBrCrDrErFrGrH)r�r�r�rBr7rUs&&&&& rr��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�%
�	
r"c
�p�\P!V4pVPVP44V#)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
)�copy�	_setattrsr�)rr�news&, rr��Attribute.evolve
s(���i�i��o���
�
�g�m�m�o�&��
r"c
�a�\;QJd!.V3RlSP4FNK	5#!V3RlSP44#)�
Play nice with pickle.
c3�t<"�TF-pVR8wd
\SV4M\SP4x�K/	R#5i�rAN)r�rrA�r�r�rs& �rr��)Attribute.__getstate__.<locals>.<genexpr>%
s4����
�&��$(�:�#5�G�D�$��4��
�
�;N�N�&�s�58�rPrnrsfrr�Attribute.__getstate__!
s?����u�
����
�u�	
�u�
����
�
�	
r"c
�P�VP\VPV44R#�rN)rr�rn�rr�s&&rr�Attribute.__setstate__*
s��	
���s�4�>�>�5�1�2r"c		���\PV4pVFJwr4VR8wdV!W44KT!TV'd \P!\	V44M\
4KL	R#r)r�r�r�r�rr�)r�name_values_pairsr�r�r�s&&   rr�Attribute._setattrs0
sU��$�,�,�T�2�
�,�K�D��z�!��d�*���!��.�.�t�E�{�;�6��	-r"r)r�r:r;r<rCrDrErFr>r?rAr7r@rBr�rGrH)
NNNFNNNNNNr2)r'r(r)r*r+rnrHr�rzr�r�rrrr.rr"rr�r�r	sC��(�X�I�(5&�n"��
��
�B�$
�3�
r"r�rA)r�r:r;r<r=rCrEr>r?r�rH)r�r�c��]tRtRtRtRt.];QJd.RR
4FNK	5M
!RR
44O]!RRRRRRRRRRRRRRRR7N5t^t	R	t
R
tRtRt
R#)rSiZ
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.
rAc#	�p"�TF,p\V\V4\RRRRRRRRRRRRR7x�K.	R#5i)NTF�r�rHr:r;r<r=r>r?rBrCrDrErFr�rG)r�r�r)r�r�s& rr��_CountingAttr.<genexpr>v
sW���
�$
��#
��-�d�3��������������
�
�"
�s�46NTFrc	� �\;P^,
un\PVnWnW nWpnW0nW�nW�nW�n	W�n
WPnW`nW�n
W�nW�nW�nVVnR#)r�N)rS�cls_counterr�rrr@r<rCrDrErFr>r?rAr7rBrGrH)rr:r;r<r=r>r?r@rAr7rBrCrDrErFrGrHs&&&&&&&&&&&&&&&&&rrH�_CountingAttr.__init__�
so��&	�!�!�Q�&�!�$�0�0����
�#��"���	������
�"���	��	� �
��	���$����
r"c
�h�VPf	WnV#\VPV4VnV#)zl
Decorator that adds *meth* to the list of validators.

Returns *meth* unchanged.

.. versionadded:: 17.1.0
)rrR�rr�s&&rr;�_CountingAttr.validator�
s3���?�?�"�"�O���#�4�?�?�D�9�D�O��r"c
�^�VP\Jd\h\VRR7VnV#)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�)rrrrMr"s&&rr:�_CountingAttr.default�
s)���=�=��'�(�(����6��
��r")rrrHr@r�rCrDr>r?rBrArGrErFr<r7)	r�rr<rCrEr>r?rGrH)r'r(r)r*r+rnrPr�r�rrHr;r:r.rr"rrSrSZ
s�����I�$0�	��
�$
�%
���
�$
�%
�

�0�>	����������������	
�?0�O�b�K�#�J�r"rSc��]tRtRtRt!RR]P4t!RR]P4tRt	Rt
]R4tR	t
R
#)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�0�]tRtRtRtRtRtRtRtRt	R#)	�ClassProps.Hashabilityi6z7
The hashability of a class.

.. versionadded:: 25.4.0
�hashable�hashable_cache�
unhashable�leave_alonerN)
r'r(r)r*r+r.r)r/r-r.rr"rr(r(6s)��	���#�*��6�!�
�+�#��'r"r(c�*�]tRtRtRtRtRtRtRtR#)�ClassProps.KeywordOnlyiFz_
How attributes should be treated regarding keyword-only parameters.

.. versionadded:: 25.4.0
r��yes�forcerN)	r'r(r)r*r+r�r0r�r.rr"rr�r.Fs!��	���.���Q���.r"r�c	���WnW nW0nW@nWPnW`nWpnW�nW�nW�n	W�n
W�nW�nW�n
W�nVVnR#r2�r2rr%r#rBrr$r%r&r'r'r(r)r;r4r�)rr2rr%r#rBrr$r%r&r'r'r(r)r;r4r�s&&&&&&&&&&&&&&&&&rrH�ClassProps.__init__gs_��&)��$�� 0��"����'>�$�$��$�� �
�,��&�� 0��"��,��.��!2��r"c	��VP\PPJ;'g'VP\PPJ#r2)r'r�r(r.r)rs&rr1�ClassProps.is_hashable�sI��
���
� 6� 6� ?� ?�?�
J�
J����:�#9�#9�#I�#I�I�	
r")r&r$r(r'r;r%r)rr�r%r'r2r#rrBr4Nr2)r'r(r)r*r+r,�Enumr(r�rnrHr�r1r.rr"rr�r��
sJ��B�H(�d�i�i�(� /�d�i�i�/��I�&"3�H�
��
r"r�c�4�]tRtRtRtRtRRltRtRtRt	R#)	rMi�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*
c	��WnW nR#r2�rTr�)rrTr�s&&&rrH�Factory.__init__�s����$�r"c
�a�\;QJd!.V3RlSP4FNK	5#!V3RlSP44#)rc3�<<"�TFp\SV4x�K	R#5ir2r�rs& �rr��'Factory.__getstate__.<locals>.<genexpr>�s����D�^�T�W�T�4�(�(�^�s�rrsfrr�Factory.__getstate__�s/����u�D�T�^�^�D�u�D�u�D�T�^�^�D�D�Dr"c
�\�\VPV4Fwr#\WV4K	R#r)r�rnrh)rr�r�r�s&&  rr�Factory.__setstate__�s%���t�~�~�u�5�K�D��D��&�6r"r9Nr$)
r'r(r)r*r+rnrHrrr.rr"rrMrM�s���$*�I�%�E�'r"rM)
r�r:r;r<r=rCrEr>r?r�c�^�]tRtRtRtRtRRRR/Rlt]RRl4tR	R
lt	Rt
RtR
tR#)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
�takes_fieldr�Fc	�a�VSnVSnVSn\V4pVP	4SnSP'gSP'g
V3RlSnMkSP'dSP'g
V3RlSnM;SP'gSP'd
V3RlSnMV3RlSnVP4pVeVSPPR&R#R#)c�&<�SPV4#r2�r@)r�rQ�__rs&&&�rr��$Converter.__init__.<locals>.<lambda>s�������1Fr"c�&<�SPW4#r2rE)r��instancerFrs&&&�rr�rG
s�������9r"c�&<�SPW4#r2rE)r�rFr�rs&&&�rr�rGs���T�^�^��6r"c�(<�SPWV4#r2rE)r�rIr�rs&&&�rr�rGs���4�>�>���<r"Nr`)	r@r�rBr�get_first_param_typer��__call__�get_return_typer�)rr@r�rB�ex�rtsf&$$  rrH�Converter.__init__�s����"���$���&���
!�)�
,��!#�!8�!8�!:�������4�#3�#3�#3�F�D�M�
�_�_�_�T�%5�%5�%5��D�M�����T�%5�%5�%5��D�M��D�M��
�
�
!��
�>�68�D�M�M�)�)�(�3�r"c� �V^8�dQhRRRR/#)rXr�rZr`r)rbs"rrc�Converter.__annotate__s��/�/�C�/�C�/r"c
��RV2#)zP
Return the name that a converter for an attribute name *attr_name*
would have.
�__attr_converter_r)r�s&rr��Converter._get_global_names��#�9�+�.�.r"c�$�V^8�dQhRRRRRR/#)rXr�rZr�r`r)rbs"rrcrS"s&��\�\�S�\�S�\�S�\r"c
�z�VP'g*VP'gVPV4RVR2#VP'd-VP'dVPV4RVRVR2#VP'dVPV4RVR2#VPV4RVRVR2#)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`.
r�rQz, self, attr_dict['z'])z, self)z
, attr_dict[')r�rBr�)rr�r�s&&&rr��Converter._fmt_converter_call"s�������4�#3�#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
�N�RVPRVPRVP/#)z`
Return a dict containing only converter and takes_self -- the rest gets
computed when loading.
r@r�rB�r@r�rBrs&rr�Converter.__getstate__3s+��
�����$�/�/��4�+�+�
�	
r"c
�*�VP!R/VBR#)z
Load instance from state.
Nrr*rs&&rr�Converter.__setstate__>s��	
�
�
���r")rMr�r@rBr�N)rMr��_global_namer@rBr�)
r'r(r)r*r+rnrHr{r�r�rrr.rr"rr�r��sE���(�I�9��9�5�9�6�/��/�\�"	
�r"r�c�6a�\P!RV4p\V\4'dTpMC\V\\
34'dVUu/uF
qf\
4bK	ppM
Rp\V4hVPRR4pVPRR4p	VPRR4p
/oVeSPV4VeVSR&V	eV	SR&V
eV
SR&\P!W/V3Rl4p\P!\\4;_uu_4\ P"!^4P$P'RR	4VnRRR4VPR
R4p\+VVP'R4VP'R4R
4wVR&VR&\-RRV/VB!V4p
VP/4UUu/uF!wr�VP0fKW�P0bK#	uppV
nV
#uupi +'giL�;iuuppi)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.rNrrHc�&<�VPS4#r2)rO)r�r�s&�rr��make_class.<locals>.<lambda>�s
����	�	�$�r"r'�__main__r=rCrETr�r)�unicodedata�	normalizerNrrOrPrVrJ�poprOr��	new_classrdrerfrKrp�	_getframe�	f_globalsr�r(rrr�r7r�)r�r��bases�
class_body�attributes_argumentsr�r�rUr�r��	user_init�type_r=r�rr�r�s&&&&,           @r�
make_classrpZ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�	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�G=� 6H�H�"H�H	)r=rEc�.�]tRtRtRt]!4tRtRtR#)�
_AndValidatori�z*
Compose many validators to a single one.
c	�>�VPFpV!WV4K	R#r2)�_validators)rrr�r�r�s&&&& rrM�_AndValidator.__call__�s���!�!�A�
�d�%� �"r"rN)	r'r(r)r*r+rVrtrMr.rr"rrrrr�s����(�K�!r"rrc��.pVF7pTP\V\4'd
VPMV.4K9	\\	V44#)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�rNrrrtrP)�
validatorsr�r;s*  rrRrR�sM���D��	�����)�]�3�3�
�!�!���	
� ���t��%�%r"c�da�\;QJdRS4F'gKRM	RM
!RS44pV'dV3RlpMV3RlpS'g,\R4pVPPRVRV/4M�\	S^,4P4pV'dWBPR&SR
,p\'g#\V\4'd
VPp\	V4P4pV'dWbPR&V'd\VRRR	7#V#)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
c3�B"�TFp\V\4x�K	R#5ir2�rNr�)r��cs& rr��pipe.<locals>.<genexpr>�s���G�J�q�*�Q�	�2�2�J�s�TFc�h<�SF*p\V\4'd
V!WV4MV!V4pK,	V#r2rz)r�rr�r{�
converterss&&& �r�pipe_converter�pipe.<locals>.pipe_converter�s5�����+5�a��+C�+C�A�c��'��3��� �
�Jr"c�*<�SFpV!V4pK
	V#r2r)r�r{r~s& �rrr�
s�������f�� ��Jr"�Ar�r`)r�rBro)rr	r�rOrrLrrNr�rMrN)r~�return_instancerr��t�lastrPsj      rrQrQ�s���� �c�G�J�G�c�c�c�G�J�G�G�O��	�	���C�L���&�&�-�-�u�a��1�.E�F�
!��A��/�D�D�F���45�*�*�5�1��"�~���|�
�4�� ;� ;��=�=�D�"�$�
'�
7�
7�
9��
�79�*�*�8�4����D�d�K�K��r")ztyping.ClassVarz
t.ClassVar�ClassVarztyping_extensions.ClassVar)Nr�r2)T)NNNNNNNFFTFFFFFNNFFNNNTNT)NNr[)n�
__future__rr]rdrr,r-rwrrrpr�rerY�collections.abcrr�	functoolsr�typingrrr	r�r
rrr
rrrrr�
exceptionsrrrr�objectr�r�r�r�rvr�r�rcrQr:r9r8r6rr�intr0rVriryr�r�r�r�r�r�r�r�rrr�rrrIr r�rr+r�r�rjr�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�rn�_ar�r>rSr��_casrM�_fr�rprrrR)r�r�s00r�<module>r�s���#�
�������
����-�%�+�+�(�'������!�!��'����)��!�2�2�2�6��
�H�	��l�l�7�?�?�G�4D�4D�E���t�y�y��(�
�
���
(��
(�"
��	
��	
�	
�
�	
�����
��
�k�\ � �F1�.$�*�$�0�"'�#�B%�8uE�p1�h�"�7�tF	�F	�R�8((�V�4B�J
���/��E�P�	�"�J5*�p�"6#�r�+�\&�:.�$/�B&�J3�]�)�
W�,/�^E�P�K�K�x�#�#��$���
���
�����j� �
��%�d�+��$���"
���)�2�&��6�"�Q���+� 5�q�q�"�6���
=�b��F�F�1�q�v�v��'<�1�1�b�
=�
�	�Q�Q�h�	�-�0�1�
�_
�_
�`�$�$��%���
���
����
�
��%�d�+��%���"�Y�z��6�d�
C�
�$'�$'�h�!�!��"���
���
����
�
���"��� �G�I�g�R�8��C�2�
N��a�a�b;��;���
���
����
�
���;��� 
��I�i�r�*�"�5�R�
�	��y�T�d�V�T�t�$�	!�	!�%�	!�&�.9��S��(7��
=��z	��v��ns6�(%N&�!N+�8N+�	N0
�!N0
�4N0
�2"N5�N:�N?

Youez - 2016 - github.com/yon3zu
LinuXploit