a
    Sic2  ã                   @   s*   d dl Z d dlZG dd„ dee jjƒZdS )é    Nc                   @   s6   e Zd ZdZdd„ Zdd„ ZejZdd„ Z	dd	„ Z
d
S )Ú	DictStacka²  
    A stack of dictionaries that behaves as a view on those dictionaries,
    giving preference to the last.

    >>> stack = DictStack([dict(a=1, c=2), dict(b=2, a=2)])
    >>> stack['a']
    2
    >>> stack['b']
    2
    >>> stack['c']
    2
    >>> len(stack)
    3
    >>> stack.push(dict(a=3))
    >>> stack['a']
    3
    >>> set(stack.keys()) == set(['a', 'b', 'c'])
    True
    >>> set(stack.items()) == set([('a', 3), ('b', 2), ('c', 2)])
    True
    >>> dict(**stack) == dict(stack) == dict(a=3, c=2, b=2)
    True
    >>> d = stack.pop()
    >>> stack['a']
    2
    >>> d = stack.pop()
    >>> stack['a']
    1
    >>> stack.get('b', None)
    >>> 'c' in stack
    True
    c                 C   s(   t  | ¡}tttj dd„ |D ƒ¡ƒƒS )Nc                 s   s   | ]}|  ¡ V  qd S ©N)Úkeys)Ú.0Úc© r   ú^/var/www/html/django/DPS/env/lib/python3.9/site-packages/setuptools/_distutils/_collections.pyÚ	<genexpr>*   ó    z%DictStack.__iter__.<locals>.<genexpr>)ÚlistÚ__iter__ÚiterÚsetÚ	itertoolsÚchainÚfrom_iterable)ÚselfZdictsr   r   r   r   (   s    
zDictStack.__iter__c                 C   s8   t tt | ¡ƒƒD ]}||v r||   S qt|ƒ‚d S r   )ÚreversedÚtupler   r   ÚKeyError)r   ÚkeyZscoper   r   r   Ú__getitem__,   s    zDictStack.__getitem__c                 C   s   t jj | |¡S r   )ÚcollectionsÚabcÚMappingÚ__contains__)r   Úotherr   r   r   r   4   s    zDictStack.__contains__c                 C   s   t tt| ƒƒƒS r   )Úlenr   r   )r   r   r   r   Ú__len__7   s    zDictStack.__len__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚappendÚpushr   r   r   r   r   r   r      s   !r   )r   r   r   r   r   r   r   r   r   r   Ú<module>   s   