CasperSecurity

Current Path : /lib/python3/dist-packages/urllib3/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/urllib3/__pycache__/_collections.cpython-310.pyc

o

�jS,�@s�ddlmZz
ddlmZmZWney!ddlmZmZYnwzddlmZWney:Gdd�d�ZYnwddlm	Z	ddl
mZdd	lZdd
lm
Z
mZddgZe�ZGd
d�de�ZGdd�de�Zd	S)�)�absolute_import)�Mapping�MutableMapping)�RLockc@seZdZdd�Zdd�ZdS)rcC�dS�N���selfrr�6/usr/lib/python3/dist-packages/urllib3/_collections.py�	__enter__�zRLock.__enter__cCrrr)r
�exc_type�	exc_value�	tracebackrrr�__exit__r
zRLock.__exit__N)�__name__�
__module__�__qualname__rrrrrrrsr)�OrderedDict�)�
InvalidHeaderN)�iterkeys�
itervalues�RecentlyUsedContainer�HTTPHeaderDictc@sVeZdZdZeZddd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)ra�
    Provides a thread-safe dict-like container which maintains up to
    ``maxsize`` keys while throwing away the least-recently-used keys beyond
    ``maxsize``.

    :param maxsize:
        Maximum number of recent elements to retain.

    :param dispose_func:
        Every time an item is evicted from the container,
        ``dispose_func(value)`` is called.  Callback which will get called
    �
NcCs"||_||_|��|_t�|_dSr)�_maxsize�dispose_func�ContainerCls�
_containerr�lock)r
�maxsizerrrr�__init__/s
zRecentlyUsedContainer.__init__cCsD|j�|j�|�}||j|<|Wd�S1swYdSr)r!r �pop)r
�key�itemrrr�__getitem__6s

$�z!RecentlyUsedContainer.__getitem__cCs�t}|j�%|j�|t�}||j|<t|j�|jkr#|jjdd�\}}Wd�n1s-wY|jr@|turB|�|�dSdSdS)NF)�last)�_Nullr!r �get�lenr�popitemr)r
r%�value�
evicted_value�_keyrrr�__setitem__=s
��
�z!RecentlyUsedContainer.__setitem__cCsJ|j�|j�|�}Wd�n1swY|jr#|�|�dSdSr)r!r r$r)r
r%r-rrr�__delitem__Ls��z!RecentlyUsedContainer.__delitem__cCs4|j�
t|j�Wd�S1swYdSr)r!r+r r	rrr�__len__Ss$�zRecentlyUsedContainer.__len__cCstd��)Nz7Iteration over this class is unlikely to be threadsafe.)�NotImplementedErrorr	rrr�__iter__Ws�zRecentlyUsedContainer.__iter__cCs`|j�tt|j��}|j��Wd�n1swY|jr,|D]	}|�|�q$dSdSr)r!�listrr �clearr)r
�valuesr-rrrr6\s��zRecentlyUsedContainer.clearcCs8|j�tt|j��Wd�S1swYdSr)r!r5rr r	rrr�keysfs$�zRecentlyUsedContainer.keys)rN)rrr�__doc__rrr#r'r0r1r2r4r6r8rrrrrs

cs�eZdZdZd/�fdd�	Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ejr.e
jZe
jZe�Zdd�Zdd�Zefdd�Zdd�Zdd�Zdd�Zefdd�Zdd �ZeZeZeZeZd!d"�Zd#d$�Zd%d&�Z d'd(�Z!d)d*�Z"d+d,�Z#e$d-d.��Z%�Z&S)0rap
    :param headers:
        An iterable of field-value pairs. Must not contain multiple field names
        when compared case-insensitively.

    :param kwargs:
        Additional field-value pairs to pass in to ``dict.update``.

    A ``dict`` like container for storing HTTP Headers.

    Field names are stored and compared case-insensitively in compliance with
    RFC 7230. Iteration provides the first case-sensitive key seen for each
    case-insensitive pair.

    Using ``__setitem__`` syntax overwrites fields that compare equal
    case-insensitively in order to maintain ``dict``'s api. For fields that
    compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add``
    in a loop.

    If multiple fields that are equal case-insensitively are passed to the
    constructor or ``.update``, the behavior is undefined and some will be
    lost.

    >>> headers = HTTPHeaderDict()
    >>> headers.add('Set-Cookie', 'foo=bar')
    >>> headers.add('set-cookie', 'baz=quxx')
    >>> headers['content-length'] = '7'
    >>> headers['SET-cookie']
    'foo=bar, baz=quxx'
    >>> headers['Content-Length']
    '7'
    NcsTtt|���t�|_|durt|t�r|�|�n|�|�|r(|�|�dSdSr)�superrr#rr �
isinstance�
_copy_from�extend)r
�headers�kwargs��	__class__rrr#�s

�zHTTPHeaderDict.__init__cCs ||g|j|��<|j|��Sr�r �lower�r
r%�valrrrr0�szHTTPHeaderDict.__setitem__cCs |j|��}d�|dd��S)N�, r�r rC�joinrDrrrr'�szHTTPHeaderDict.__getitem__cCs|j|��=dSrrB�r
r%rrrr1�szHTTPHeaderDict.__delitem__cCs|��|jvSr)rCr rIrrr�__contains__�szHTTPHeaderDict.__contains__cCs^t|t�st|d�sdSt|t|��st|�|�}tdd�|��D��tdd�|��D��kS)Nr8Fcss �|]\}}|��|fVqdSr)rC)�.0�k�vrrr�	<genexpr>�s�z(HTTPHeaderDict.__eq__.<locals>.<genexpr>)r;r�hasattr�type�dict�
itermerged�r
�otherrrr�__eq__�s
�zHTTPHeaderDict.__eq__cCs|�|�Sr)rUrSrrr�__ne__��zHTTPHeaderDict.__ne__cCs
t|j�Sr)r+r r	rrrr2�s
zHTTPHeaderDict.__len__ccs �|j��D]}|dVqdS)Nr)r r7)r
�valsrrrr4�s��zHTTPHeaderDict.__iter__cCs:z||}Wnty||jur�|YSw||=|S)z�D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
        If key is not found, d is returned if given, otherwise KeyError is raised.
        )�KeyError�_HTTPHeaderDict__marker)r
r%�defaultr-rrrr$�s
�zHTTPHeaderDict.popcCs"z||=WdStyYdSwr)rYrIrrr�discard�s
�zHTTPHeaderDict.discardcCs8|��}||g}|j�||�}||ur|�|�dSdS)z�Adds a (name, value) pair, doesn't overwrite the value if it already
        exists.

        >>> headers = HTTPHeaderDict(foo='bar')
        >>> headers.add('Foo', 'baz')
        >>> headers['foo']
        'bar, baz'
        N)rCr �
setdefault�append)r
r%rE�	key_lower�new_valsrXrrr�add�s	�zHTTPHeaderDict.addcOs�t|�dkrtd�t|����t|�dkr|dnd}t|t�r0|��D]
\}}|�||�q$n5t|t�rC|D]
}|�|||�q7n"t|d�rX|�	�D]
}|�|||�qLn
|D]
\}}|�||�qZ|�
�D]
\}}|�||�qidS)z�Generic import function for any type of header-like object.
        Adapted version of MutableMapping.update in order to insert items
        with self.add instead of self.__setitem__
        rz9extend() takes at most 1 positional arguments ({0} given)rrr8N)r+�	TypeError�formatr;r�	iteritemsrarrOr8�items)r
�argsr?rTr%rEr-rrrr=�s.
�
�
�
��zHTTPHeaderDict.extendcCsHz	|j|��}Wnty||jurgYS|YSw|dd�S)zmReturns a list of all the values for the named field. Returns an
        empty list if the key doesn't exist.rN)r rCrYrZ)r
r%r[rXrrr�getlists
�zHTTPHeaderDict.getlistcCs gd�}|D]}|�|�q|S)z�
        Remove content-specific header fields before changing the request
        method to GET or HEAD according to RFC 9110, Section 15.4.
        )zContent-EncodingzContent-LanguagezContent-LocationzContent-TypezContent-Length�Digestz
Last-Modified)r\)r
�content_specific_headers�headerrrr�_prepare_for_method_changes	z)HTTPHeaderDict._prepare_for_method_changecCsdt|�jt|���fS)Nz%s(%s))rPrrQrRr	rrr�__repr__)szHTTPHeaderDict.__repr__cCs>|D]}|�|�}t|t�rt|�}|g||j|��<qdSr)rgr;r5r rC)r
rTr%rErrrr<,s

�zHTTPHeaderDict._copy_fromcCst|��}|�|�|Sr)rPr<)r
�clonerrr�copy4s

zHTTPHeaderDict.copyccs>�|D]}|j|��}|dd�D]	}|d|fVqqdS)z8Iterate over all header lines, including duplicate ones.rNrrB)r
r%rXrErrrrd9s���zHTTPHeaderDict.iteritemsccs:�|D]}|j|��}|dd�|dd��fVqdS)z:Iterate over all headers, merging duplicate ones together.rrFrNrGrDrrrrR@s
��zHTTPHeaderDict.itermergedcCst|���Sr)r5rdr	rrrreFrWzHTTPHeaderDict.itemscCs~d}g}|jD]3}|�|�r)|std|��|d\}}||d|��f|d<q|�dd�\}}|�||��f�q||�S)z4Read headers from a Python 2 httplib message object.)� �	z/Header continuation with no previous header: %s���ro�:r)r>�
startswithr�strip�splitr^)�cls�message�obs_fold_continued_leadersr>�liner%r-rrr�from_httplibIs

�zHTTPHeaderDict.from_httplibr)'rrrr9r#r0r'r1rJrUrV�six�PY2rrr�objectrZr2r4r$r\rar=rgrk�
getheaders�getallmatchingheaders�iget�get_allrlr<rnrdrRre�classmethodrz�
__classcell__rrr@rrksB!	)�
__future__r�collections.abcrr�ImportError�collections�	threadingrr�
exceptionsrr{rr�__all__r}r)rrrrrr�<module>s&��
L
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY