__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

�֥g�o���SSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
Jr SSKJrJrJr SSKJrJrJrJrJrJr SSKJrJrJrJr \R>r Sr!S	r"S
r#\RH"05r%\"5r&\RN"\RP\RR5r*"SS\RV5r,\,RZr-"S
S\.5r/\-SSSSSSSSSSSSSS4Sjr0SPSjr1SQSjr2Sr3\3"S/SQ5r4Sr5Sr6Sr7Sr8Sr9Sr:Sr;Sr<Sr="S S!5r>S"r?S#r@SRS$jrASSS%jrB\BrCS&rDS'rES(rFS)rGS*rHS+rIS,rJSQS-jrKS.rLSTS/jrMS0rNS1rOS2r)S3rPS4rQSUS5jrRSVS7jrSSWS8jrTSVS9jrUSXS:jrVSYS;jrWSZS<jrX"S=S>5rY\YR�Vs/sHn\Y"U\-SSSSSUS?:gSS\X"U5S@9PM snr[\G"\K"\M"\Y\[SA9\[Vs/sHoR�SB:wdMUPM snSA9\[Vs/sH)oR�(dMUR�SB:wdM'UPM+ snSA9rY"SCSD5r^\K"\M"\^55r^"SESF5r_\_R�Vs/sHn\Y"U\-SSSSSSSSSG9
PM snr`\G"\K"\M"\_\`SA9\`SA9\`SA9r_"SHS65raSIVs/sHn\Y"U\-SSSSSSSSSG9
PM snr`\G"\K"\M"\a\`SA9\`SA9\`SA9ra\4S4SJjrb\B"SSSK9"SLSM55rcSNrdSOr'gs snfs snfs snfs snfs snf)[�)�annotationsN)�
itemgetter�)�_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)ztyping.ClassVarz
t.ClassVar�ClassVarztyping_extensions.ClassVar�_attrs_cached_hashc�F�\rSrSrSr\R"5rSrSr	Sr
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 �,/usr/lib/python3/dist-packages/attr/_make.py�__repr__�_Nothing.__repr__Is���c��g)NFrrs r�__bool__�_Nothing.__bool__Ls��r rN)�__name__�
__module__�__qualname__�__firstlineno__�__doc__�enum�autorrr"�__static_attributes__rr rrr<s����i�i�k�G��r rc�2�\rSrSrSr\"S5S4SjrSrg)�_CacheHashWrapper�Xac
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.
Nrc��X4$�Nr)r�_none_constructor�_argss   r�
__reduce__�_CacheHashWrapper.__reduce__ds�� �'�'r )r$r%r&r'r(�typer3r+rr rr-r-Xs��	�,0��:�R�(r r-TFc�Z�[X;US5up�nnUbUSLaUSLa
Sn[U5eU	b>U[La
Sn[U5e[	U	5(d
Sn[U5e[U	5nUc0n[
U
[[45(a[R"U
6n
U(a#[
U[[45(a[U6nU(a#[
U[[45(a[U6n[S0SU_SU_S	U_S
S_SU_SU_S
U_SU_SU_SU
_SU_SU_SU_SU_SU
_SU_6$)aC
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*
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�metadatar5�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)r8r9r:r;r<r=r?r5r>�factoryr@rArCrErFrBrD�msgs                  r�attribrThs���n$>����$� �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�[XS5n[XAU5 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_evalr^�s��
�v��0�H���$�r c���Uc0OUnSnUn[U5SURS5U4n[RR	X(5n	X�:XaOUSSSUS3nUS-
nMU[XXR5 XP$)zG
Create the method with the script given and return the method object.
NrT����-�>)�len�
splitlines�	linecache�cache�
setdefaultr^)
�namerYr\rZ�localsr[�count�
base_filename�linecache_tuple�old_vals
          r�_make_methodrn�s�����2�V�D�
�E��M�
���K�����d�#��	
���/�/�,�,�X�G���%��#�C�R�(�)��5�'��3��
��
����f�T�4��:�r c��US3nSUS3S/nU(a-[U5HupEURSUSUS35 M OURS5 [[S	.n[	S
RU5U5 Xb$)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))
�
Attributeszclass z(tuple):z    __slots__ = ()�    z% = _attrs_property(_attrs_itemgetter(�))z    pass)�_attrs_itemgetter�_attrs_property�
)�	enumerate�appendr�propertyr^�join)�cls_name�
attr_names�attr_class_name�attr_class_template�i�	attr_namerZs       r�_make_attr_tuple_classr��s���"�
�*�-�O�
��!��*�����%�j�1�L�A��&�&��y�k�!F�q�c��L�
�2�
	�"�"�:�.�",��J�E��d�i�i� 3�4�e�<��!�!r �_Attributes)�attrs�
base_attrs�base_attrs_mapc��[U5nURS5(aURS5(aUSSnUR[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.
)�'�"rr`)�str�
startswith�endswith�_CLASSVAR_PREFIXES)�annots r�
_is_class_varr�#sK��
��J�E�
���
�#�#����z�(B�(B��a�������.�/�/r c��XR;$)zJ
Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
)�__dict__)�cls�attrib_names  r�_has_own_attributer�4s���,�,�&�&r c���/n0n[URSS5Hhn[US/5HTnUR(dURU;aM&URSS9nUR
U5 XCUR'MV Mj /n[5n[U5HBnURU;aMURSU5 URUR5 MD Xc4$)zI
Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
rr`�__attrs_attrs__T��	inheritedr)
�reversed�__mro__�getattrr�rh�evolverw�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��/n0nURSSHrn[US/5H^nURU;aMURSS9nUR	UR5 URU5 XCUR'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.
rr`r�Tr�)r�r�rhr�r�rw)r�r�r�r�r�r�s      r�_collect_base_attrs_brokenr�Zs����J��M��K�K��"�%����#4�b�9�A��v�v�)�)�����4��(�A�� � ����(����a� �$,�!�&�&�!�:�&��$�$r c��^�URm[U5nUb[UR55nGOBUSLGaTR5VV	s1sHup�[	U	[
5(dMUiM  n
nn	/n[
5nUR5H�up�[U
5(aMURU5 TRU[5n[	U[
5(dU[La
[5O[US9nURX�45 M� X�-
n[U5S:�a,[SSR[!UU4SjS95-S-5eO [!S	TR55S
S9nUVVs/sH*unn["R%UUURU5S9PM, nnnU(a*['UUVs1sHo�R(iM sn5unnO)[+UUVs1sHo�R(iM sn5unnU(a<UVs/sHo�R-SS9PM nnUVs/sHo�R-SS9PM nnUU-nS
nSU5HJnUSLa$UR.[LaSU<3n[1U5eUS
LdM3UR.[LdMHSnML Ub	U"UU5nUVs/sH8nUR2(d"UR-[5UR(5S9OUPM: nnUVs/sHo�R(PM nn[7UR8U5n[;U"U5UU45$s sn	nfs snnfs snfs snfs snfs snfs snfs snf)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`.
T�r8rz1The following `attr.ib`s lack a type annotation: �, c�:>�TRU5R$r0)�get�counter)�n�cds �r�<lambda>�"_transform_attrs.<locals>.<lambda>�s���b�f�f�Q�i�6G�6Gr )�key�.c3�Z# �UH!up[U[5(dMX4v� M# g7fr0)rLrQ)�.0rh�attrs   r�	<genexpr>�#_transform_attrs.<locals>.<genexpr>�s'���
�",�J�D��d�M�2����",�s�+�
+c� �USR$�Nr)r�)�es rr�r��s��!�A�$�,�,r )rh�car5)r@Fc3�h# �UH(oRSLdMURSLdM$Uv� M* g7f)FN)r=r@�r�r�s  rr�r��s(���
M��A�&�&��"5�a�!�)�)�u�:L�a�a��s�2�
2�	2zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: )rF)r�r
rM�itemsrLrQr�r�r�r�rrTrwrcrry�sorted�	Attribute�from_counting_attrr�rhr�r�r8rIrF�_default_init_alias_forr�r$r�)r��these�auto_attribsr@�collect_by_mro�field_transformer�anns�ca_listrhr��ca_names�annot_namesrr5r��unannotatedr��	own_attrsr�r�r��had_defaultrSr{�
AttrsClassr�s                         @r�_transform_attrsr�vse���

���B��C� �D����u�{�{�}�%��	��	�!�h�h�j�
�(�
���$�
�.�
�(�	�
�
���e��#�z�z�|�O�I��T�"�"���O�O�I�&����y�'�*�A��a��/�/� !�W��F�H�&��2C���N�N�I�>�*� ,��,���{��a��+�C��)�)��;�,G�H����	��
� ��
�"$�(�(�*�
�
'�

��%�	�%�M�I�r�	�$�$��r�����(;�	%�	
�%�	���$7��)�,�)�Q�&�&�)�,�%
�!�
�M�%?��)�,�)�Q�&�&�)�,�%
�!�
�M��5>�?�Y��X�X�d�X�+�Y�	�?�6@�A�j��h�h�t�h�,�j�
�A���"�E��K�
M��
M���$��1�9�9��#7�A�BC�AF�G�C��S�/�!��%��A�I�I�W�$<��K�
N��$�!�#�u�-���
��A�@A�w�w����.�q�v�v�6��7�A�M��
�
�#(�(�%�Q�&�&�%�J�(�'����j�A�J��
�5�)�:�}�E�F�F��o
��H��-��-��@��A��.
��)s6�M�/M�>1M	�M
�-M
�M�5M�=?M#�M(c��/SQnUbURS5 OUR/SQ5 URSS/5 [US5nU[RUS.n[SS	R
U5UUS
U0S9$)N)	zdef 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�__getattr__ru�_cls)ri)rw�extend�_generate_unique_filename�_OBJ_SETATTR�__get__rnry)r�r�r��lines�unique_filename�globs      r�_make_cached_property_getattrr��s���
�E��#�
���:�	
�	���	
�	
�
�L�L�$�)�	
��0��Y�?�O�/�+�3�3�,��D����	�	�%�����C�
��r c�r�[U[5(aUS;a[RXU5 g[e)z,
Attached to frozen classes as __setattr__.
)�	__cause__�__context__�
__traceback__�__suppress_context__�	__notes__N)rL�
BaseException�__setattr__r�rrh�values   r�_frozen_setattrsr�s8���$�
�&�&�4�4�,�	�!�!�$�e�4��
�r c�p�[U[5(aUS;a[RX5 g[e)z,
Attached to frozen classes as __delattr__.
)r�N)rLr��__delattr__r)rrhs  r�_frozen_delattrsr�.s/���$�
�&�&�4�>�+A��!�!�$�-��
�r c�,�UunURn[	U5nUHBnUR
(dMURnURnX�;dM5[X'5X'MD U"S0UD6$![a S[U5S3n[U5Sef=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)	rIrcrH�	__class__�fieldsr=rhrFr�)	�args�changes�instrSr�r�r�r�	init_names	         rr�r�9s���J'�����.�.�C��3�K�E�
���v�v���F�F�	��G�G�	��#�!(��!9�G��
��>��>���!�'�8��T���;�O�	���n�$�&�	'�s�A-�-&Bc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrg)�
_ClassBuilderisz 
Iteratively build *one* class.
)�_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�_slots�
_weakref_slot�_wrote_own_setattrc�6�[UUUUUU5unnnXlU(a[UR5O0UlX�lUVs1sHnURiM snUlUUl[SU55Ul
X0lX@lXPl
X�l[[!USS55UlSUlUR"(a?UR&n[(R*"U5n[-UR.5S:�Ul[[!USS55Ul[U5(+UlX�lX�lX�lSUlUR
URS'U(a.[<URS'[>URS'S	UlO�U[@[BRD[BRF4;a�S=nnUH3nURHbS	nURJbS	nU(dM*U(dM3 O U[@:XaU(dU(a6U[BRD:XaU(aU[BRF:XaU(dSUlU(a.URM5uURS
'URS'ggs snf)Nc3�8# �UHoRv� M g7fr0�rhr�s  rr��)_ClassBuilder.__init__.<locals>.<genexpr>�s��� 7��A����s��__attrs_pre_init__Fr�__attrs_post_init__r�r�r�T�__getstate__�__setstate__)'r�r��dictr�r�r�rhr�r�rNr�rr�rr��boolr�r�rr
�inspect�	signaturerc�
parametersr�r�rrr�rr�r��_DEFAULT_ON_SETATTRr�validate�convertr9r>�_make_getstate_setstate)rr�r��slots�frozen�weakref_slot�getstate_setstater�r@�
cache_hash�is_excr�rE�has_custom_setattrr�r�r��base_mapr��
pre_init_func�pre_init_signature�
has_validator�
has_converters                       r�__init__�_ClassBuilder.__init__�s;��"'7�������
'
�#��z�8��	�/4��c�l�l�+�"�����,6�7�J�q�A�F�F�J�7���&��� � 7�� 7�7�������)��%��!�'�#�/C�U�"K�L���"'������ �2�2�M�!(�!2�!2�=�!A��&)�*<�*G�*G�&H�1�&L�D�#�"�7�3�0E�u�#M�N���#'��;������%��#5� �"'���,0�K�K����(�)��,<�D�N�N�=�)�,<�D�N�N�=�)�&*�D�#�
������O�O�
�
�
-2�1�M�M����;�;�*�$(�M��;�;�*�$(�M� �=�]�]����"5�5�*�m��'�"2�"2�2�=��'�/�/�1�-�
$(�� ���,�,�.�
����~�.����~�.���s8s�Jc�6�SURRS3$)Nz<_ClassBuilder(cls=z)>)r�r$rs rr�_ClassBuilder.__repr__�s��$�T�Y�Y�%7�%7�$8��;�;r c��URSLaUR5nO1UR5n[(a[R
"U5n[
USS5(a SUR;aUR5 U$)zk
Finalize class based on the accumulated configuration.

Builder cannot be used after calling this method.
T�__attrs_init_subclass__N)	r�_create_slots_class�_patch_original_classr	�abc�update_abstractmethodsr�r�r()rr�s  r�build_class�_ClassBuilder.build_class�sp���;�;�$���*�*�,�C��,�,�.�C��|��0�0��5��

�C�2�D�9�9�)����=��'�'�)��
r c�(�URnURnUR(aaURHQnX2;dM
[	X[
5[
LdM#[R"[5 [X5 SSS5 MS URR5Hup4[XU5 M UR(d5[	USS5(a#SUlUR(d[ UlU$!,(df   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��setattrrr0r�r�r�)rr��
base_namesrhr�s     rr*�#_ClassBuilder._patch_original_classs����i�i���%�%�
�����(�(���*���9�5�Y�F�
$�,�,�^�<���*�=�<�)� �>�>�/�/�1�K�D��C�u�%�2�
�&�&�7��(�%�,
�,
�).�C�%��+�+�".����
�#=�<�s�3D�
D	c�	�URR5VVs0sH)upU/[UR5QSPSP7;dM'X_M+ nnnUR(d_SUS'UR
(dIURRH/nURRSS5(dM&[US' O 0nSnURRSSHYnURRSS5bS	nUR[US
/5Vs0sHnU[XG5_M sn5 M[ [UR5nURn	UR (a-S[URS
S5;aSU	;aU(dU	S-
n	UR5VV
s0sH2upz[#U
[$R&5(dM&XzR(_M4 nnn
/nU(a�[+UR5n
UR5H`up~X�4-
n	X7	UR-U5 [.R0"U5R2nU[.R4R6LdM\X�U'Mb URS
5nUbUR-U5 [9UUUR5US
'U	Vs/sHowU;dM
UPM nnUR5VVs0sHunnUU;dMUU_M nnnUVs/sHowU;dM
UPM nnURU5 UR:(aUR-[<5 [U5US
'URR>US'[AUR5"URRBURRU5n[DRF"URRI5U5H�n[#U[J[L45(a[URNSS5nO:[#U[P5(a[URRSS5nO
[USS5nU(dMyUH,nURTURLnU(a	UUl*M,M. M� U$s snnfs snfs sn
nfs snfs snnfs snf![Va Mdf=f)z<
Build and return a new class with a `__slots__` attribute.
r��__weakref__Fr0r�rr`NT�	__slots__r)r:r�r&�__closure__),r�r�rNr�rr�r��	__bases__r�r�r�r��updater�r�r�rrL�	functools�cached_property�funcr
rwrr�return_annotation�	Parameter�emptyr�r��_HASH_CACHE_FIELDr&r5r$�	itertools�chain�values�classmethod�staticmethod�__func__rx�fget�
cell_contentsrI)r�k�vr�r��existing_slots�weakref_inheritedrhr7�namesr@r��&additional_closure_functions_to_update�class_annotationsrA�
annotationr��
slot_names�slot�slot_descriptor�reused_slotsr��item�
closure_cells�cell�matchs                          rr)�!_ClassBuilder._create_slots_class'sm�����,�,�.�
�.����M�%�� 0� 0�1�M�:�M�}�M�M�
�A�D�.�	�
��&�&�*/�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�*,����
�)3�%���/�9�+D�+D�E�
'�D�&�&�&�)3�	�
�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�
��K
��>��"
��>H��
��
O��J"����sS�&R�R�R#
�-%R(�R(�>	R.�R.�&
R3�7R3�	R9�R9�+R>�>
S�Sc�~�UR[URXR55URS'U$)Nr)�_add_method_dunders�
_make_reprr�r�r�)r�nss  r�add_repr�_ClassBuilder.add_repr�s4��%)�%=�%=��t�{�{�B�	�	�2�&
����z�"��r c��URRS5nUc
Sn[U5eSnURU5URS'U$)Nrz3__str__ can only be generated if a __repr__ exists.c�"�UR5$r0�rrs r�__str__�&_ClassBuilder.add_str.<locals>.__str__�s���=�=�?�"r rh)r�r�rIr`)rr:rSrhs    r�add_str�_ClassBuilder.add_str�sO���~�~�!�!�*�-���<�G�C��S�/�!�	#�%)�$<�$<�W�$E����y�!��r c�v^^�[SUR55mU4SjnURmUU4SjnX4$)z6
Create custom __setstate__ and __getstate__ methods.
c3�4# �UHoS:wdM
Uv� M g7f)r:Nr)r��ans  rr��8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>�s���!
�)�2�=�-@�B�B�)�s�	�	c�F>�TVs0sHo[X5_M sn$s snf��!
Automatically created by attrs.
�r�)rrh�state_attr_namess  �r�slots_getstate�=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate�s(���;K�K�:J�$�'�$�-�-�:J�K�K��Ks�c�>�[RU5n[U[5(a[	TU5H
up4U"X45 M OTHnX1;dM
U"X1U5 M T(aU"[
S5 gg)rrN)r�r�rLrN�ziprE)r�state�_ClassBuilder__bound_setattrrhr��hash_caching_enabledrts     ��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 )rNr�r�)rrur|r{rts   @@rr�%_ClassBuilder._make_getstate_setstate�sG���
!�!
��)�)�!
�
��	L� $�/�/��	9�,�-�-r c�$�SURS'U$)N�__hash__)r�rs r�make_unhashable�_ClassBuilder.make_unhashable�s��%)����z�"��r c	��UR[URURURUR
S95URS'U$)N�rrr�)r`�
_make_hashr�r�r�r�r�rs r�add_hash�_ClassBuilder.add_hash�sH��%)�%=�%=���	�	�����|�|��+�+�	
�&
����z�"��r c�B�UR[URURURUR
URURURURURURURSS95URS'U$)NF��
attrs_initr#�r`�
_make_initr�r�r�rr�r�rr�r�rrr�rs r�add_init�_ClassBuilder.add_init�s���%)�%=�%=���	�	�����"�"��'�'��#�#�������� � ��#�#����� � � �

�&
����z�"�"�r c�D�URS5URS'U$)Nc��[U40UD6$r0)r�)rr�s  rr��+_ClassBuilder.add_replace.<locals>.<lambda>s��F�4�$;�7�$;r �__replace__)r`r�rs r�add_replace�_ClassBuilder.add_replaces%��(,�(@�(@�;�)
����}�%��r c�V�[SUR55URS'g)Nc3�# �UH7nUR(dMUR(aM)URv� M9 g7fr0)r=r@rh)r��fields  rr��/_ClassBuilder.add_match_args.<locals>.<genexpr>s0���1
�$���z�z�
�"'�-�-�
�E�J�J�$�s�A�A�A�__match_args__)rNr�r�rs r�add_match_args�_ClassBuilder.add_match_argss'��+0�1
����1
�,
����'�(r c�B�UR[URURURUR
URURURURURURURSS95URS'U$)NTr��__attrs_init__r�rs r�add_attrs_init�_ClassBuilder.add_attrs_inits���+/�+C�+C���	�	�����"�"��'�'��#�#�������� � ��#�#����� � ��

�,
����'�(�"�r c��URnUR[URUR55US'UR[55US'U$)N�__eq__�__ne__)r�r`�_make_eqr�r��_make_ne�rr�s  r�add_eq�_ClassBuilder.add_eq2sN��
�^�^���/�/��T�Y�Y����,�
��8���/�/��
�;��8���r c�^�TRnU4Sj[TRTR55uUS'US'US'US'T$)Nc3�F># �UHnTRU5v� M g7fr0)r`)r��methrs  �rr��*_ClassBuilder.add_order.<locals>.<genexpr>?s'����B
�;��
�$�$�T�*�*�;�s�!�__lt__�__le__�__gt__�__ge__)r��_make_orderr�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�^�UR(aU$0mURHPnUR=(d URnU(dM+U[R
LdM@X4TUR'MR T(dU$UR(a
Sn[U5eU4SjnSURS'URU5URS'SUlU$)Nz7Can't combine custom __setattr__ with on_setattr hooks.c�d>�TUup4U"XU5n[XU5 g![a UnNf=fr0)�KeyErrorr�)rrh�valr��hook�nval�sa_attrss      �rr��._ClassBuilder.add_setattr.<locals>.__setattr__YsA���
*�"�4�.����D�S�)����T�*���
���
�s� �/�/Tr0r�)r�r�rErr�NO_OPrhr�rIr�r`r)rr�rErSr�r�s     @r�add_setattr�_ClassBuilder.add_setattrFs�����<�<��K������A����9��)9�)9�J��z�j��
�
�=�#$�=����� ��
��K��#�#�K�C��S�/�!�	+�37����.�/�(,�(@�(@��(M����}�%�"&����r c��[R"[5 URRUlSSS5 [R"[5 URR
SUR3UlSSS5 [R"[5 SURR
S3UlSSS5 U$!,(df   N�=f!,(df   Nc=f!,(df   U$=f)z<
Add __module__ and __qualname__ to a *method* if possible.
Nr�z$Method generated by attrs for class )r2r3r4r�r%r&r$r()r�methods  rr`�!_ClassBuilder._add_method_dundersis����
 �
 ��
0� $�	�	� 4� 4�F��1��
 �
 ��
0�%)�Y�Y�%;�%;�$<�A�f�o�o�=N�"O�F��1��
 �
 ��
0�6��9�9�)�)�*�!�-�
�N�1��
�1�
0��1�
0��1�
0��
�s#�C�+C!�& C2�
C�!
C/�2
DN)r$r%r&r'r(r;r#rr-r*r)rcrjrr�r�r�r�r�r�r�r�r�r`r+rr rr�r�sso����I�*Z/�x<��."�HI�V�
�'.�R�
��(�
��(��!�Fr r�c��Ub#[USLUSL45(a
Sn[U5eUbX4$UcUnUcUnUSLaUSLa
Sn[U5eX4$)��
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.��anyrI)r;rArC�
default_eqrSs     r�_determine_attrs_eq_orderr�|sx��
��3��$���T�0A�B�C�C�6����o�����x��
�z�
���}���	�U�{�u��}�=����o��
�9�r c���Ub#[USLUSL45(a
Sn[U5eSnUbU"U5upXX4$UcUSpqO
U"U5upUcXp�O
U"U5up(USLaUSLa
Sn[U5eXX(4$)r�Nr�c�8�[U5(aSUpX4$SnX4$)z(
Decide whether a key function is used.
TN)rJ)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;rArCr�rSr��cmp_keyrBrDs	         rrGrG�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�USLdUSLaU$UcUSLaU$UHn[X5(dM 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�dundersr8�dunders      r�_determine_whether_to_implementr��sH���t�|�t�u�}����|��u�,������c�*�*����Nr c�@^^^^^^^^	^
^^^
^^^^^^^^^�TbSSKnUR[S5SS9 [XOUS5ummUbUm[	T[
[45(a[R"T6mUUUU
UUUUUUUUUUUUUUU
UU	4SjnUcU$U"U5$)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*.
NrzQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.�)�
stacklevelc�>�T=(d [U5nT	SL=(a [U[5nT=(a [US5nU(aU(a
Sn[	U5e[UTTUT[
UTTSTS9TTT
UTTUT
5n[
UTTS5(aURT5 TSLaUR5 [
UTTS5nU(dUSLaUR5 U(d#[
UTTS5(aUR5 UR5 TcTSLa[US	5(aS
mTSLaTS
LaTb
Sn[U5eTS
LdTcUS
LdU(aT
(a
Sn[U5eOGTSLd
TcUSLaUSLaUR5 O$T
(a
Sn[U5eUR5 [
UTTS
5(aUR5 O$UR!5 T
(a
Sn[U5e["(a![US5(dUR%5 [&(a(T(a![US5(dUR)5 UR+5$)NTr�z/Can't freeze a class with a custom __setattr__.)rr
r�rg)r�r�)r�r�r�r�r�Fr7zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.�r#zFInvalid value for cache_hash.  To use hash caching, init must be True.r�r�)�_has_frozen_base_class�
issubclassr�r�rIr�r�rcrjr�r�r�rHr�r�r�r�rr�r	r�r-)r��	is_frozenr�has_own_setattrrS�builderrAr�r��auto_excrr��eq_r�rrr<r=r@�
match_argsrE�order_r:�repr_nsrr�r�rs       ���������������������r�wrap�attrs.<locals>.wrapLs�����9�4�S�9�	��T�!�D�j��m�&D��%�
�*<���+
���y�C�C��S�/�!�������+��!��0��
�
��������)
��,+���{�M�
�
�
���W�%��$�;��O�O��
,���k�#7�
���"��*��N�N���9����&N�
�
�
��������
�L��t�#�"�3�
�3�3��D��t���E� 1�d�6F�J�C��C�.� ��5�=�T�\�b�E�k�f��E����n�$���T�\��L�R�4�Z�I��,=�
�����E����n�$��#�#�%�*���{�M�
�
�
�����"�"�$��^����n�$��<� 2�3�
� F� F����!�
�L��&�s�,<�=�=��"�"�$��"�"�$�$r )	�warnings�warn�DeprecationWarningr�rLrMrNrrO)�	maybe_clsr�r�r:r;r<r=rrrr�r�r@rr�rArCr�r�rrEr�r��unsafe_hashr�r�r�r�s ``` ``````````  ``````   @@rr�r��s������x����
�
��c�
��		�	
�,�C�U�D�A�K�C�������*�t�U�m�,�,��\�\�:�.�
�g%�g%�g%�g%�V�����	�?�r c�&�UR[L$)zJ
Check whether *cls* has a frozen ancestor by looking at its
__setattr__.
)r�r�)r�s rr�r��s��
�?�?�.�.�.r c
�X�SUSURS[USUR5S3$)z>
Create a "filename" suitable for a function being generated.
z<attrs generated � r�r&rb)r%r�r$)r��	func_names  rr�r��s7��
�I�;�a����'7�q��3�����5�
6�a�	9�r c�,^^	^
^^^
�[ST55mSn[US5n[U5m
0m
SnSmSm	U(dUS-
nOUS-
nUS	-
nS
T-mT	S-
m	U/mUU	U
UUU
4SjnU(aTRUS
[S3-5 U(a,U"S[S3US-5 TRUS-S-5 OU"S[S3US-5 TRUS[3-5 O	U"SU5 SRT5n[
SX�T
5$)Nc3�# �UH5oRSLd URbM URSLdM1Uv� M7 g7f)TN)r<rAr�s  rr��_make_hash.<locals>.<genexpr>�s/�����a�F�F�d�N�q�v�v��!�$�$�$�,���5�s�?�
?�	?�        r<zdef __hash__(selfzhash((rrz):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(�)c	�v>�TRX-T-UST	S3-/5 TH|nUR(aFSURS3nURTU'TRUSUSURS3-5 MZTRUSURS3-5 M~ TRUS-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��,�_�_key�(self.z),�
        self.rqN)r�rBrhrw)
�prefix�indentr��cmp_namer��closing_bracesrZ�	hash_func�method_lines�	type_hashs
    ������r�append_hash_computation_lines�1_make_hash.<locals>.append_hash_computation_lines�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 zif self.z	 is None:zobject.__setattr__(self, '�', r��self.� = zreturn self.zreturn rur�)rNr�r<rwrEryrn)r�r�rr�tabr��hash_defrrYr�rZr�r�r�s `       @@@@@rr�r��sM�������
�E��C�/��V�<�O��_�%�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��
�F�U�C�Cr c�&�[XSSS9UlU$)z
Add a hash method to *cls*.
Fr�)r�r��r�r�s  r�	_add_hashr	s���c��5�I�C�L��Jr c��SnU$)z
Create __ne__ method.
c�P�URU5nU[La[$U(+$)zR
Check equality and either forward a NotImplemented or
return the result negated.
)r��NotImplemented)r�other�results   rr��_make_ne.<locals>.__ne__*s(��
���U�#���^�#�!�!��z�r r)r�s rr�r�%s��
	��Mr c�~�UVs/sHo"R(dMUPM nn[US5n/SQn0nU(a�URS5 UH�nUR(aQSURS3nURXV'URSUSURSUS	URS
3	5 O+URSURSUR35 X!S
LdM�US
S3US
'M� URS5 OURS5 SRU5n[
SXsU5$s snf)z.
Create __eq__ method for *cls* with *attrs*.
rA)zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz
    return  (r�r�r�r�z) == z(other.r�r�z
 == other.r`z andz    )z    return Truerur�)rAr�rwrBrhryrn)r�r�r�r�r�rZr�rYs        rr�r�8s&���&��1���Q��E�&�/��T�:�O�
�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���&�5�A�A��?
's
�D:�D:c�^^�TVs/sHo"R(dMUPM snmU4SjmU4SjnU4SjnU4SjnU4SjnX4XV4$s snf)z1
Create ordering methods for *cls* with *attrs*.
c�>>^�[SU4SjT555$)z
Save us some typing.
c3�H# �UHupU(aU"U5OUv� M g7fr0r)r�r�r�s   rr��6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>hs(���
��
���C��J�5�(���� "c3�h># �UH'n[TUR5UR4v� M) g7fr0)r�rhrD)r�r��objs  �rr�rjs(�����=B����a�f�f�%�q�{�{�3�U�s�/2)rN)rr�s`�r�attrs_to_tuple�#_make_order.<locals>.attrs_to_tupleds)����
��=B��
�
�	
r c�d>�URURLaT"U5T"U5:$[$rq�r�r�rr
rs  �rr��_make_order.<locals>.__lt__o�0����?�?�d�n�n�,�!�$�'�.��*?�?�?��r c�d>�URURLaT"U5T"U5:*$[$rqrrs  �rr��_make_order.<locals>.__le__x�0����?�?�d�n�n�,�!�$�'�>�%�+@�@�@��r c�d>�URURLaT"U5T"U5:�$[$rqrrs  �rr��_make_order.<locals>.__gt__�rr c�d>�URURLaT"U5T"U5:�$[$rqrrs  �rr��_make_order.<locals>.__ge__�r!r )rC)r�r�r�r�r�r�r�rs `     @rr�r�^sI����)��1���Q��)�E�	
������6�)�)��c
*s
�A
�A
c�b�UcURn[X5Ul[5UlU$)z-
Add equality methods to *cls* with *attrs*.
)r�r�r�r�r�rs  r�_add_eqr'�s.��
�}��#�#���#�%�C�J���C�J��Jr c��[US5n[SU55nUVVVs0sHupVov[:wdMUS-U_M nnnn[US'[US'[
US'/n	UHMupVn
U
(aSU-OSU-S	-nU[:Xa
U<S
U<S3O
U<S
U<SU<S
3nU	R
U5 MO SRU	5n
UcSnOUS-nSSSSSSSSSSSSSUSU
S3SS /n[S!S"RU5X8S#9$s snnnf)$Nr:c3�# �UHNnURSLdMURURSLa[OURUR4v� MP g7f)FTN)r:rhr=r�s  rr��_make_repr.<locals>.<genexpr>�sD���"��A��6�6���	?����!�&�&�D�.�$�a�f�f�q�v�v�>��s
�A�?A�_reprrr4rrzgetattr(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))rru)rZ)	r�rNr:rr4rrwryrn)r�rbr�r��attr_names_with_reprsrh�rr�rZ�attribute_fragmentsr~�accessor�fragment�
repr_fragment�cls_name_fragmentr�s                rrara�sr��/��V�<�O�"�"��"���-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�$��D�I�I�e�$�o����U
s
�D�
Dc�F�UcURn[X!U5UlU$)z
Add a repr method to *cls*.
)r�rar)r�rbr�s   r�	_add_reprr5�s'��
�}��#�#���e��-�C�L��Jr c���[U5nUc"[U[5(d
Sn[U5e[	USS5nUc,Ub[	USS5nUbX0lU$U<S3n[
U5eU$)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.)rrLr5rHr�r�r)r��generic_baserSr�s    rr�r��s���.$�C�(�L���J�s�D�$9�$9�.����n���C�*�D�1�E��}��#��L�*;�T�B�E�� �',�#�����8�9��"�3�'�'��Lr c���[U[5(d
Sn[U5e[USS5nUcU<S3n[	U5eUVs0sHo3R
U_M sn$s snf)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
r7r�Nr8)rLr5rHr�rrh)r�rSr�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	��[RSLag[UR5H0nURnUcMU"X[XR55 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�r9r�rh)r�r�rOs   rrr2sI�����%�'��
�D�N�N�
#��
�K�K���=�
�d�w�t�V�V�,�-�$r c�T�URU5nU=(a SUR;$)z6
Check if the attribute name comes from a slot class.
r;)r�r�)�a_namer�r�s   r�
_is_slot_attrr@Ds(���
�
�F�
#�C��.�;�#�,�,�.�.r c�r�U
SL=(a U
[RLnU(aU(a
Sn
[U
5eU=(d Un/n0nUH�nUR(dUR[
LaM)UR
U5 UUUR'URbUSLa
Sn
[U
5eSnMlU(dMuUR[RLdM�SnM� [US5n[UUUUUUUUU	UUU(aSOS5unnnUR[R;a6UR[RURR5 UR[
US.5 U(a[ R"US'[%U(aSOSUUU5nUUlU$)Nz$Frozen classes can't use on_setattr.Tr=r�r#)r�	attr_dictr�)rr�rIr=r8rrwrhrEr��_attrs_to_init_scriptr%�sys�modulesr>r�r�r�rn�__annotations__)r�r��pre_init�pre_init_has_args�	post_initrrrr�r�cls_on_setattrr��has_cls_on_setattrrS�needs_cached_setattr�filtered_attrsrBr�r�rYrZrr=s                       rr�r�Ls���	�d�"�J�~�W�]�]�'J���$�4����o��%�/����N��I�
���v�v�!�)�)�w�.�����a� ��	�!�&�&���<�<�#���~�<�� ��o�%�#'� �
�
�A�L�L��
�
�$E�#'� �� 0��V�<�O�!6���
���������&��J�
"��F�E�;��~�~����$�
���S�[�[����0�9�9�:�	�L�L�W�9�=�>��(4�';�';��#�$��&��J���
�	�D�'�D���Kr c��SUSUS3$)zB
Use the cached object.setattr to set *attr_name* to *value_var*.
�
_setattr('rr�r)r�	value_var�has_on_setattrs   r�_setattrrR�s���	�{�#�i�[��2�2r �	Converterc�2�SUSURX5S3$)z_
Use the cached object.setattr to set *attr_name* to *value_var*, but run
its converter first.
rOrr�)�_fmt_converter_call�rrPrQr>s    r�_setattr_with_converterrW�s&���	�{�#�i�&C�&C�I�&Y�%Z�Z[�\�\r c�8�U(a[XS5$SUSU3$)zc
Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
relegate to _setattr.
Trr)rR)rr�rQs   r�_assignrY�s'��
��	�$�/�/�
�9�+�S���(�(r c�X�U(a
[XSU5$SUSURX53$)z�
Unless *attr_name* has an on_setattr hook, use normal assignment after
conversion. Otherwise relegate to _setattr_with_converter.
Trr)rWrUrVs    r�_assign_with_converterr[�s5���&�y�T�9�M�M�
�9�+�S��!>�!>�y�!T� U�V�Vr c�^�USLa9USLa
S[[4$SU4SjjnSU4SjjnSUU4$S[[4$)z[
Determine the correct setter functions based on whether a class is frozen
and/or slotted.
Trc�N>�[UT5(a[XU5$SUSU3$�N�_inst_dict['z'] = )r@rR)rrPrQr�s   �r�
fmt_setter�&_determine_setters.<locals>.fmt_setter�s2����Y�
�6�6��	�n�E�E�!�)��E�)��=�=r c�z>�U(d[UT5(a[XX#5$SUSURX53$r^)r@rWrU)rrPrQr>r�s    �r�fmt_setter_with_converter�5_determine_setters.<locals>.fmt_setter_with_converter�sH�����y�-�!H�!H�.��.���"�)��E�)�2O�2O�PY�2e�1f�g�gr )z_inst_dict = self.__dict__�rr�rPr�rQr�returnr��
rr�rPr�rQrr>rSrfr�)rRrWrYr[)rrr�r`rcs  `  r�_determine_settersrh�s������~��D�=��x�!8�8�8�	>��	>�'*�	>�<@�	>�
�	>�	h��	h��	h�!�	h�!�		h�
�	h�
,��%�
�	
��w�.�.�.r c
��U(aS/O/nU	(aURS5 [XU5up�nURU
5 /n/n/n0nSS0nUGH!nUR(aURU5 URnUR
SL=(d% UR
[RL=(a U
nURn[UR[5nU(aURR(aSOSnURb5[UR[5(d[UR5nOURnURSLGa
U(a�[ UR4-nUbJURU"UUSUS	3-UU55 URUUR#UR5'O URU"UUSUS	3-U55 URR$UU'GOUbHURU"US
US3UU55 URUUR#UR5'GO�URU"US
US3U55 GO�UR[&La�U(d�USUS3nUR((aURU5 OURU5 UbDURU"UUUU55 URUUR#UR5'GOURU"UUU55 GO�U(GaNUS
3nUR((aURU5 OURU5 URSUS35 [ UR4-nUb}URSU"UUUU5-5 URS5 URSU"UUS-U-S	-UU5-5 URUUR#UR5'ORURSU"UUU5-5 URS5 URSU"UUS-U-S	-U5-5 URR$UU'O�UR((aURU5 OURU5 UbCURU"UUUU55 URUUR#UR5'OURU"UUU55 URSLdGM�UR*bUcUR*UU'GM�UcGM�UR,(dGMUR,UU'GM$ U(az[.US'URS5 UHZnSUR-nSUR-nURSUSUSURS	35 URUU'UUU'M\ U(aURS5 U(a?U(aU(aS[0S3nOS[0S3nO
S[0S3nURU5 U(a-S R3S!U55n URS"U S	35 S#R3U5nUn!U(acUU(aS#OSS$S#R3U53-
nS#R3S%U5V"s/sH
n"U"S&U"3PM sn"5n#U!U!(aS#OS-
n!U!U#-
n!U(aU(a	S'U!S	3US('S)n$S*USUS+U(aU$R3U5OS,S-3UU4$s sn"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.
zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)rfNr�Fr,r�zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:rqzelse:Trz#if _config._run_validators is True:�__attr_validator_�__attr_z(self, z, self.zself.__attrs_post_init__()rOz', None)r_z	'] = Nonerz = Noner�c3�d# �UH&oR(dMSUR3v� M( g7f)rN)r=rhr�s  rr��(_attrs_to_init_script.<locals>.<genexpr>�s"���B�%�Q�6�6�(�%����x�(�%�s�0�0zBaseException.__init__(self, r�z*, c3�H# �UHoRS5Sv� M g7f)�=rN)�split)r��kwas  rr�rn�s���#N��#�I�I�c�N�1�$5��rrpzself.__attrs_pre_init__(rz
    zdef z):
    �passru)rwrhr�r9rhrErr�rFrLr8rK�
takes_selfr>rSr=�_INIT_FACTORY_PAT�_get_global_namerRrr@r5�_first_param_typerrEry)%r�r��
is_slotted�
call_pre_initrH�call_post_init�does_cache_hashr�rrLrK�method_namer��extra_linesr`rcr��kw_only_args�attrs_to_validate�names_for_globalsrr�rrQ�arg_name�has_factory�
maybe_selfr>�init_factory_name�arg�val_name�init_hash_cache�vals�
pre_init_args�kw_arg_name�pre_init_kw_only_args�NLs%                                     rrCrC�s*��(.;�
(�)��E��
���
3�		
�:L��}�:�6�K�6�
�L�L���
�D��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� ��$����-�!�8�^�Y����'�'�"�)�"<�"<�Q�V�V�"D�E����Z�	�8�^�L�M�
��J�h�'�C��y�y��#�#�C�(����C� ��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�%��$����-�!�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�%�k�n�'.��)�$�
���:�;�"�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��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�$�URS5$)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.
r�)�lstriprs rr�r��s���;�;�s��r c�l�\rSrSrSrSrS
SjrSr\SSj5r	Sr
S	rS
rSr
Srg)r�i	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`.
)rhr8r9r:rArBrCrDr<r=r?r5r>r@r�rErFNc��[X^=(d U
U=(d US5up�nn[RU5nU"SU5 U"SU5 U"SU5 U"SU5 U"SU
5 U"SU5 U"SU5 U"S	U5 U"S
U5 U"SU5 U"SU5 U"S
U	(a[R"[U	55O[5 U"SU
5 U"SU5 U"SU5 U"SU5 U"SU5 g)NTrhr8r9r:rArBrCrDr<r=r>r?r5r@r�rErF)rGr�r��types�MappingProxyTyper�_EMPTY_METADATA_SINGLETON)rrhr8r9r:r;r<r=r�r?r5r>r@rArBrCrDrErF�
bound_setattrs                    rr#�Attribute.__init__C	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�%r c��[er0)rr�s   rr��Attribute.__setattr__z	s��!�!r c
�
�Uc
URnOURb
Sn[U5e[RVs0sHnUS;dMU[	X%5_M nnU"SUUR
URUSSS.UD6$s snf)Nz8Type annotation and type argument cannot both be present)rhr9r8r5r�F)rhr9r8r5r;r�r)r5rIr�r;r��
_validator�_default)r�rhr�r5rSrN�	inst_dicts       rr��Attribute.from_counting_attr}	s����<��7�7�D�
�W�W�
 �L�C��S�/�!��(�(�
�(�����
�A�w�r�~��(�	�
��
���m�m��K�K����

��
�	
��
s�
B�Bc�p�[R"U5nURUR55 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
)�copy�	_setattrsr�)rr��news   rr��Attribute.evolve�	s(���i�i��o���
�
�g�m�m�o�&��
r c�B^�[U4SjTR55$)�
Play nice with pickle.
c3�r># �UH,nUS:wa[TU5O[TR5v� M. g7f)r?N)r�rr?�r�rhrs  �rr��)Attribute.__getstate__.<locals>.<genexpr>�	s4����
�&��$(�:�#5�G�D�$��4��
�
�;N�N�&�s�47�rNr;rs`rr�Attribute.__getstate__�	s#����
����
�
�	
r c�N�UR[URU55 g�r�N)r�rxr;�rrys  rr
�Attribute.__setstate__�	s��	
���s�4�>�>�5�1�2r c	���[RU5nUHHup4US:wa
U"X45 MU"UU(a[R"[	U55O[
5 MJ g)Nr?)r�r�r�r�rr�)r�name_values_pairsr�rhr�s     rr��Attribute._setattrs�	sU��$�,�,�T�2�
�,�K�D��z�!��d�*���!��.�.�t�E�{�;�6��	-r r)
NNNFNNNNNNr0)r$r%r&r'r(r;r#r�rIr�r�rr
r�r+rr rr�r�	sb��(�X�I�<�
���������'5&�n"��
��
�<�$
�3�
r r�r?)rhr8r9r:r;rArCr<r=r�rF)r�r�c�~�\rSrSrSrSr/\"SS55Q\"SSSSSSS	SS	SSS	SS	SS
9P7rSr	Sr
S
rSrSr
g)rQi�	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�rFr>r�rArBr<r=r@r?rErCrDr:r5c#�j# �UH)n[U[U5[SSSSSSSSSSSSS9v� M+ g7f)NTF�rhrFr8r9r:r;r<r=r@rArBrCrDr�rE)r�r�r)r�rhs  rr��_CountingAttr.<genexpr>
sR���
�$
��#
��-�d�3��������������
�"
�s�13)	r�r�r:rArCr<r=rErFr?NTFr�rc��[=RS-
sl[RUlXlX lXplX0lX�lX�lX�l	X�l
XPlX`lX�l
X�lX�lX�lUUlgr�)rQ�cls_counterr�r�r�r>r:rArBrCrDr<r=r?r5r@rErF)rr8r9r:r;r<r=r>r?r5r@rArBrCrDrErFs                 rr#�_CountingAttr.__init__5
so��&	�!�!�Q�&�!�$�0�0����
�#��"���	������
�"���	��	� �
��	���$����
r c�f�URcXlU$[URU5UlU$)zl
Decorator that adds *meth* to the list of validators.

Returns *meth* unchanged.

.. versionadded:: 17.1.0
)r�rP�rr�s  rr9�_CountingAttr.validatorZ
s3���?�?�"�"�O���#�4�?�?�D�9�D�O��r c�V�UR[La[e[USS9UlU$)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)rt)r�rrrKr�s  rr8�_CountingAttr.defaulth
s)���=�=��'�(�(����6��
��r )r$r%r&r'r(r;rNr�r�r�r#r9r8r+rr rrQrQ�	s�����I�$0�	�
�$
�%
�

�0�>	����������������	
�?0�O�b�K�#�J�r rQc�2�\rSrSrSrSrSSjrSrSrSr	g)	rKi~
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*
�rRrtc��XlX lgr0r�)rrRrts   rr#�Factory.__init__�
s����$�r c�B^�[U4SjTR55$)r�c3�<># �UHn[TU5v� M g7fr0rsr�s  �rr��'Factory.__getstate__.<locals>.<genexpr>�
s����D�^�T�W�T�4�(�(�^�s�r�rs`rr�Factory.__getstate__�
s����D�T�^�^�D�D�Dr c�Z�[URU5Hup#[XU5 M gr�)rxr;r6)rryrhr�s    rr
�Factory.__setstate__�
s%���t�~�~�u�5�K�D��D��&�6r N)F)
r$r%r&r'r(r;r#rr
r+rr rrKrK~
s���$*�I�%�E�'r rK)
rhr8r9r:r;rArCr<r=r�c�V�\rSrSrSrSrSSS.Sjr\S
Sj5rSSjr	S	r
S
rSrg)rSi�
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__rw�_global_namer>�takes_fieldrtF�rtr�c��^�UTlUTlUTl[U5nUR	5TlTR(dTR(dU4SjTlOgTR(aTR(dU4SjTlO9TR(dTR(aU4SjTlOU4SjTlUR5nUbUTRRS'gg)Nc�&>�TRU5$r0�r>)r�r��__rs   �rr��$Converter.__init__.<locals>.<lambda>�
s�������1Fr c�&>�TRX5$r0r�)r��instancer�rs   �rr�r��
s�������9r c�&>�TRX5$r0r�)r�r�r�rs   �rr�r��
s���T�^�^��6r c�(>�TRXU5$r0r�)r�r�r�rs   �rr�r��
s���4�>�>���<r rf)	r>rtr�r�get_first_param_typerwr��get_return_typerF)rr>rtr��ex�rts`     rr#�Converter.__init__�
s����"���$���&���
!�)�
,��!#�!8�!8�!:������4�#3�#3�F�D�M�
�_�_�T�%5�%5��D�M����T�%5�%5��D�M��D�M��
�
�
!��
�>�68�D�M�M�)�)�(�3�r c��SU3$)zP
Return the name that a converter for an attribute name *attr_name*
would have.
�__attr_converter_r)rs rrv�Converter._get_global_name�
s��#�9�+�.�.r c�p�UR(d(UR(dURU5SUS3$UR(a+UR(aURU5SUSUS3$UR(aURU5SUS3$URU5SUSUS3$)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,r�z, self, attr_dict['z'])z, self)z
, attr_dict[')rtr�rv)rrrPs   rrU�Converter._fmt_converter_call�
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�URURURS.$)z`
Return a dict containing only converter and takes_self -- the rest gets
computed when loading.
�r>rtr�r�rs rr�Converter.__getstate__
s%������/�/��+�+�
�	
r c�(�UR"S0UD6 g)z
Load instance from state.
Nrr�r�s  rr
�Converter.__setstate__s��	
�
�
���r )r�rwr>r�rtN)rr�rfr�)rr�rPr�rfr�)
r$r%r&r'r(r;r#rJrvrUrr
r+rr rrSrS�
s>���(�I�16�5�9�6�/��/�\�"	
�r r�c��^�[U[5(aUnOC[U[[45(aUVs0sH
of[	5_M nnO
Sn[U5eUR
SS5nUR
SS5n	UR
SS5n
0mUbTRU5 UbUTS'U	bU	TS'U
bU
TS'[R"X0U4Sj5n[R"[[5 [R"S5R R#SS	5UlSSS5 UR
S
S5n['UUR#S5UR#S5S
5uUS'US'[)SSU0UD6"U5n
UR+5VVs0sH up�UR,cMX�R,_M" snnU
lU
$s snf!,(df   N�=fs snnf)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)``

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*
z(attrs argument must be a dict or a list.r
Nrr#c�&>�URT5$r0)r>)rb�bodys �rr��make_class.<locals>.<lambda>os
����	�	�$�r rr$�__main__r;rArCTr�r)rLrrMrNrTrH�popr>r��	new_classr2r3r4rIrD�	_getframe�	f_globalsr�r%r�r�r�r5rF)rhr��bases�
class_body�attributes_arguments�cls_dictr�rSrGrI�	user_init�type_r;r�rNrOr�s                @r�
make_classr�1s����P�%������	�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�G�<6G�'G/�>G/�
G,)rr�c�,�\rSrSrSr\"5rSrSrg)�
_AndValidatori�z*
Compose many validators to a single one.
c�<�URHnU"XU5 M gr0)�_validators)rr�r�r�rOs     rr��_AndValidator.__call__�s���!�!�A�
�d�%� �"r rN)	r$r%r&r'r(rTr�r�r+rr rr�r��s����(�K�!r r�c��/nUH6nUR[U[5(aUROU/5 M8 [[	U55$)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�rLr�r�rN)�
validatorsr�r9s   rrPrP�sM���D��	�����)�]�3�3�
�!�!���	
� ���t��%�%r c�^�[ST55nU(aU4SjnOU4SjnT(d4[R"S5nURR	X3S.5 O�[TS5R
5nU(aXBRS'TSn[(d![U[5(aURn[U5R5nU(aXbRS	'U(a[US
S
S9$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
c3�B# �UHn[U[5v� M g7fr0�rLrS)r��cs  rr��pipe.<locals>.<genexpr>�s���G�J�q�*�Q�	�2�2�J�s�c�f>�TH)n[U[5(a	U"XU5OU"U5nM+ U$r0r�)r�r�r�r��
converterss    �r�pipe_converter�pipe.<locals>.pipe_converter�s5�����+5�a��+C�+C�A�c��'��3��� �
�Jr c�*>�THnU"U5nM
 U$r0r)r�r�rs  �rrr�s�������f�� ��Jr �A)r�rfrr�r`rfTr�)r��typing�TypeVarrFr>rr�r
rLrSr�r�)r�return_instancerr�t�lastr�s`      rrOrO�s���� �G�J�G�G�O��	�	���N�N�3����&�&�-�-�a�.E�F�
!��A��/�D�D�F���45�*�*�5�1��"�~���|�
�4�� ;� ;��=�=�D�"�$�
'�
7�
7�
9��
�79�*�*�8�4����D�d�K�K��r )Nrjr0)T)NNNNNNNFFTFFFFFNNFFNNNTN)NNrerg)rr�r�r�rQrrfr�)rrrrr��dict[str, type])r�zlist[Attribute]r�rrxrryrrHrrzrr{rr�r
rrrLrrKrr|r�rfztuple[str, dict, dict])rhr�rfr�)e�
__future__rr+r2r�r)r?rrFrerDr�r�operatorrrjrrrr	r
rrr
r�
exceptionsrrrr�objectr�r�rur�rEr�r�r1rOrrr�Enumrr�intr-rTr^rnr�r�r�r�r�r�r�r�r�r�r�r�r�rGr�r�r�r�r�r�r	r�r�r�r'rar5r�r;r@r�rRrWrYr[rhrCr�r�r;�_arhr<rQrK�_frSr�r�rP)rhr�s00r�<module>rso��#�
��������
��
��(�'������!�!��'����)��!�2�2�2�6��
�H�	��l�l�7�?�?�G�4D�4D�E���t�y�y��(�
�
���
(��
(�"
��	
��	
�	
�
�	
�����
��
�h�V ��:"�:%���
��0�"'�#�>%�8jG�Z7�t�"�7�tF�F�R�8((�X.2��6�
��	
��	
�	
�
���
����
��
��������1]�@
���/��DD�N��&#B�L5*�p
�6�r�+�\&�:.�$/�L�^3�]��]�"�]�48�]�EN�]��]�)�
W��
W�"�
W�48�
W�EN�
W��
W�,/��,/��,/�.=�,/�^A��A��A��A��	A�
�A��
A��A�#�A�
�A��A��A��A��A�H�H�H�r�#�#��$���
���
�����j� �
��%�d�+��$���"
���)�2�&��6�"�Q���+� 5�q�"�6���
=�b��F�F�1�q�v�v��'<�1�b�
=�
�	�Q�Q�h�	�-�0�1�
�$'�$'�h�!�!��"���
���
����
�
���"��� �G�I�g�R�8��C�2�
N��a�a�b;��;���
���
����
�
���;��� 
��I�i�r�*�"�5�R�
�	��y�T�Z�B�T�t�$�	!�	!�%�	!�&�.9��S��(7��
=��D��ns0�;#M�/M	�M	�M
�,M
�>M
�9M�4M

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 2.57 KB 0644
_cmp.cpython-313.pyc File 4.86 KB 0644
_compat.cpython-313.pyc File 3.43 KB 0644
_config.cpython-313.pyc File 1.03 KB 0644
_funcs.cpython-313.pyc File 12.99 KB 0644
_make.cpython-313.pyc File 93 KB 0644
_next_gen.cpython-313.pyc File 22.38 KB 0644
_version_info.cpython-313.pyc File 2.94 KB 0644
converters.cpython-313.pyc File 4.33 KB 0644
exceptions.cpython-313.pyc File 3.55 KB 0644
filters.cpython-313.pyc File 2.88 KB 0644
setters.cpython-313.pyc File 1.81 KB 0644
validators.cpython-313.pyc File 25.22 KB 0644
Filemanager