HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/debian/__pycache__/_util.cpython-312.pyc
�

�|�a�4����ddlZddlmZ	ddlmZmZmZmZmZmZm	Z	m
Z
mZmZe	d�Z
d�ZGd�de�ZeZd	�ZGd
�dee
�ZGd�d
ee
�ZGd�de�Zy#e$rdZ
Y�DwxYw)�N)�
ReferenceType)
�Iterable�Optional�Generic�Dict�List�Iterator�TypeVar�
TYPE_CHECKING�Any�Callable�TFc��|�|�SdS�N�)�refs �./usr/lib/python3/dist-packages/debian/_util.py�resolve_refrs���O�3�5�-��-�c�R��eZdZdZddgZer�fd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Z�xZ
S)�_CaseInsensitiveStringzCase insensitive string.
    �	str_lower�str_origc�H��tt|�|�d|_d|_y)N�)�superr�__init__rr)�self�s�	__class__s  �rrz_CaseInsensitiveString.__init__s!����(�$�8��;��D�N��D�Mrc�j�tj||�}||_|j�|_|Sr)�str�__new__r�lowerr)�cls�str_rs   rr#z_CaseInsensitiveString.__new__$s-���K�K��T�"����
��j�j�l����rc��|jSr)r�rs r�__str__z_CaseInsensitiveString.__str__,s���}�}�rc�,�t|j�Sr)�hashrr(s r�__hash__z_CaseInsensitiveString.__hash__0s���D�N�N�#�#rc�\�	|j|j�k(S#t$rYywxYw)NF)rr$�AttributeError�r�others  r�__eq__z_CaseInsensitiveString.__eq__4s.��	��>�>�U�[�[�]�2�2���	��	�s��	+�+c��||k(Srrr/s  r�__ne__z_CaseInsensitiveString.__ne__;s���5�=� � rc��|jSr)rr(s rr$z_CaseInsensitiveString.lower?s���~�~�r)�__name__�
__module__�__qualname__�__doc__�	__slots__rrr#r)r,r1r3r$�
__classcell__)r s@rrrs8�����j�)�I��	���$��!�rrc�"�|j�Sr)r$)�xs r�default_field_sort_keyr=Gs���7�7�9�rc��eZdZdZd�Zed��Zejd��Zd�Zdd�d�Z	dd�d	�Z
ed
��Zed��Z
d�Zd
�Zy)�LinkedListNode)�_previous_node�value�	next_node�__weakref__c�.�d|_d|_||_yr)r@rBrA�rrAs  rrzLinkedListNode.__init__Ps��"��������
rc�,�t|j�Sr)rr@r(s r�
previous_nodezLinkedListNode.previous_nodeVs���4�.�.�/�/rc�L�|�tj|�|_yd|_yr)�weakrefrr@�r�nodes  rrGzLinkedListNode.previous_node[s!��48�3C�g�k�k�$�/�����rc��tj|j|j�d|_d|_|jSr)r?�
link_nodesrGrBrAr(s r�removezLinkedListNode.remove`s5���!�!�$�"4�"4�d�n�n�E�!�������z�z�rF)�skip_currentc#�XK�|r|jn|}|r|��|j}|r�yy�wr)rB�rrOrKs   r�	iter_nextzLinkedListNode.iter_nextgs+����".�t�~�~�4����J��>�>�D����%*�*c#�XK�|r|jn|}|r|��|j}|r�yy�wr)rGrQs   r�
iter_previouszLinkedListNode.iter_previousps/����&2�t�!�!�t����J��%�%�D��rSc�*�|r||_|r||_yyr�rGrBrWs  rrMzLinkedListNode.link_nodesys���&3�I�#��&/�M�#�rc�\�tj||�tj||�yr)r?rM)�
first_node�new_node�	last_nodes   r�_insert_linkzLinkedListNode._insert_link�s$��	�!�!�*�h�7��!�!�(�I�6rc�n�||ur||jusJ�tj|j||�yr)rGr?r\�rrZs  r�
insert_beforezLinkedListNode.insert_before�s5���8�#���8J�8J�(J�J�J��#�#�D�$6�$6��$�Grc�n�||ur||jusJ�tj|||j�yr)rBr?r\r^s  r�insert_afterzLinkedListNode.insert_after�s1���8�#�����(F�F�F��#�#�D�(�D�N�N�CrN)r5r6r7r9r�propertyrG�setterrNrRrU�staticmethodrMr\r_rarrrr?r?Ls���G�I���0��0����N��N�� %�"�$)�&��0��0��7��7�H�
Drr?c��eZdZdZdZdd�Zd�Zd�Zed��Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�
LinkedListavSpecialized linked list implementation to support the deb822 parser needs

    We deliberately trade "encapsulation" for features needed by this library
    to facilitate their implementation.  Notably, we allow nodes to leak and assume
    well-behaved calls to remove_node - because that makes it easier to implement
    components like Deb822InvalidParagraphElement.
    ��	head_node�	tail_node�_sizeNc�V�d|_d|_d|_|�|j|�yy�Nr)rhrirj�extend)r�valuess  rrzLinkedList.__init__�s.����������
����K�K���rc��|jduSr)rhr(s r�__bool__zLinkedList.__bool__�s���~�~�T�)�)rc��|jSr)rjr(s r�__len__zLinkedList.__len__�s���z�z�rc�J�|j�|jjSdSr)rirAr(s r�tailzLinkedList.tail�s"��(,�~�~�'A�t�~�~�#�#�K�t�Krc�h�|j�td��|j|j�y)Nzpop from empty list)ri�
IndexError�remove_noder(s r�popzLinkedList.pop�s*���>�>�!��2�3�3�������(rc#�^K�|j}|�y|j�Ed{���y7��wr)rhrR)rrhs  r�
iter_nodeszLinkedList.iter_nodes�s*�����N�N�	�����&�&�(�(�(�s�#-�+�-c#�NK�d�|j�D�Ed{���y7��w)Nc3�4K�|]}|j���y�wr�rA)�.0rKs  r�	<genexpr>z&LinkedList.__iter__.<locals>.<genexpr>�s����=�+<�4�D�J�J�+<���)rzr(s r�__iter__zLinkedList.__iter__�s����=�4�?�?�+<�=�=�=�s�%�#�%c#�lK�|j}|�yd�|j�D�Ed{���y7��w)Nc3�4K�|]}|j���y�wrr})r~�ns  rrz*LinkedList.__reversed__.<locals>.<genexpr>�s����?�%>��A�G�G�%>�r�)rirU)rris  r�__reversed__zLinkedList.__reversed__�s/�����N�N�	����?�Y�%<�%<�%>�?�?�?�s�*4�2�4c�0�||jur%|j|_|j�5d|_n-||jur|j|_|j�J�|jdkDsJ�|xjdzc_|j�y)Nr�)rhrBrirGrjrNrJs  rrwzLinkedList.remove_node�s{���4�>�>�!�!�^�^�D�N��~�~�%�!%���
�T�^�^�
#�!�/�/�D�N��>�>�-�-�-��z�z�A�~��~��
�
�a��
����
rc�t�|j�|j|�S|j||j�Sr)rh�appendr_rEs  r�insert_at_headzLinkedList.insert_at_head�s2���>�>�!��;�;�u�%�%��!�!�%����8�8rc���t|�}|j�||_||_n0|j�J�|jj|�||_|xjdz
c_|S)Nr�)r?rhrirarj)rrArKs   rr�zLinkedList.append�sa���e�$���>�>�!�!�D�N�!�D�N��>�>�-�-�-��N�N�'�'��-�!�D�N��
�
�a��
��rc�8�|jt|�|�Sr)�insert_node_beforer?�rrA�
existing_nodes   rr_zLinkedList.insert_before�s���&�&�~�e�'<�m�L�Lrc�8�|jt|�|�Sr)�insert_node_afterr?r�s   rrazLinkedList.insert_after�s���%�%�n�U�&;�]�K�Krc���|j�td��|j�|j�td��|j	|�||jur||_|xj
dz
c_|S�Nz,List is empty; node argument cannot be validz&New node must not already be inserted!r�)rh�
ValueErrorrBrGr_rj�rrZr�s   rr�zLinkedList.insert_node_before�sn���>�>�!��K�L�L����)�X�-C�-C�-O��E�F�F��#�#�H�-��D�N�N�*�%�D�N��
�
�a��
��rc���|j�td��|j�|j�td��|j	|�||jur||_|xj
dz
c_|Sr�)rir�rBrGrarjr�s   rr�zLinkedList.insert_node_aftersn���>�>�!��K�L�L����)�X�-C�-C�-O��E�F�F��"�"�8�,��D�N�N�*�%�D�N��
�
�a��
��rc�4�|D]}|j|��yr)r�)rrn�vs   rrmzLinkedList.extends���A��K�K��N�rc�.�d|_d|_d|_yrlrgr(s r�clearzLinkedList.clears����������
rr)r5r6r7r8r9rrprrrbrtrxrzr�r�rwr�r�r_rar�r�rmr�rrrrfrf�sw���4�I� �*���L��L�)�)�>�@�
�9��M�L�
�
��
rrfc�d�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
eZd
�Zd�Z
d�Zd
�Zd�Zd�Zy)�
OrderedSetz�A set-like object that preserves order when iterating over it

    We use this to keep track of keys in Deb822Dict, because it's much faster
    to look up if a key is in a set than in a list.
    Nc�h�i|_t�|_|�g}|D]}|j|��yr)�_OrderedSet__tablerf�_OrderedSet__order�add�r�iterable�items   rrzOrderedSet.__init__#s4�����!�|������H��D��H�H�T�N�rc��||vr,|jj|�}	||j|<yy#t$r|jj	|��wxYwr)r�r�r��	Exceptionrw�rr�rKs   rr�zOrderedSet.add1s^���t��
�<�<�&�&�t�,�D�
�%)����T�"����
����(�(��.��
�s	�2�&Ac�r�|j|}|j|=|jj|�yr)r�r�rwr�s   rrNzOrderedSet.remove?s0���|�|�D�!���L�L������ � ��&rc�,�t|j�Sr)�iterr�r(s rr�zOrderedSet.__iter__Gs���D�L�L�!�!rc�>�tt|j��Sr)r��reversedr�r(s rr�zOrderedSet.__reversed__Ls���H�T�\�\�*�+�+rc�,�t|j�Sr)�lenr�r(s rrrzOrderedSet.__len__Qs���4�<�<� � rc��||jvSr)r��rr�s  r�__contains__zOrderedSet.__contains__Us���t�|�|�#�#rc�4�|D]}|j|��yr)r�r�s   rrmzOrderedSet.extend^s���D��H�H�T�N�rc�P�|j||jj�y)z2Re-order the given item so it is "last" in the setN)�_reorderr�r�r�s  r�
order_lastzOrderedSet.order_lastds��	
�
�
�d�D�L�L�/�/�0rc�P�|j||jj�y)z3Re-order the given item so it is "first" in the setN)r�r�r�r�s  r�order_firstzOrderedSet.order_firstis��	
�
�
�d�D�L�L�7�7�8rc�r���||k(rtd���j|��j|��fd��y)zTRe-order the given item so appears directly after the reference item in the sequence�*Cannot re-order an item relative to itselfc�<���jj|��Sr)r�r_�r<�reference_noders ��r�<lambda>z)OrderedSet.order_before.<locals>.<lambda>ts���d�l�l�&@�&@��N�&SrN�r�r�r��rr��reference_itemr�s`  @r�order_beforezOrderedSet.order_beforens6����>�!��I�J�J����n�5���
�
�d�S�Trc�r���||k(rtd���j|��j|��fd��y)zURe-order the given item so appears directly before the reference item in the sequencer�c�<���jj|��Sr)r�rar�s ��rr�z(OrderedSet.order_after.<locals>.<lambda>|s���d�l�l�&?�&?��>�&RrNr�r�s`  @r�order_afterzOrderedSet.order_aftervs6����>�!��I�J�J����n�5���
�
�d�R�Src��|j|}|jj|�||j�}||j|<yr)r�r�rwrA)rr��
reinserterrKrZs     rr�zOrderedSet._reorder~s@��
�|�|�D�!����� � ��&��d�j�j�)��%����T�rr)r5r6r7r8rr�rNr�r�rrr�r�rmr�r�r�r�r�rrrr�r�sQ�����'�"�
,�
!�$��F��1�
9�
U�T�&rr�)rIr�typingrrrrrr	r
rrr
r�ImportErrorrr"r�_strIr=r?rf�objectr�rrr�<module>r�s����!�����	���A�.�
*�S�*�Z	���
FD�W�Q�Z�FD�RD����D�Nj&��j&��]���M��s� A'�'A1�0A1