
    e                        d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d	 Zd
 Zd ZddZdZdddZddZy)    )annotations)register_module_extender)extract_nodeparse	PY39_PLUS)InferenceContext)AttributeInferenceError)AstroidManager)ClassDefc                 D    t        dt               z   t               z         S )Nz
    class defaultdict(dict):
        default_factory = None
        def __missing__(self, key): pass
        def __getitem__(self, key): return default_factory

    )r   _deque_mock_ordered_dict_mock     A/usr/lib/python3/dist-packages/astroid/brain/brain_collections.py_collections_transformr      s-    	 -	 
	
 
r   c                      d} t         r| dz  } | S )Na  
    class deque(object):
        maxlen = 0
        def __init__(self, iterable=None, maxlen=None):
            self.iterable = iterable or []
        def append(self, x): pass
        def appendleft(self, x): pass
        def clear(self): pass
        def count(self, x): return 0
        def extend(self, iterable): pass
        def extendleft(self, iterable): pass
        def pop(self): return self.iterable[0]
        def popleft(self): return self.iterable[0]
        def remove(self, value): pass
        def reverse(self): return reversed(self.iterable)
        def rotate(self, n=1): return self
        def __iter__(self): return self
        def __reversed__(self): return self.iterable[::-1]
        def __getitem__(self, index): return self.iterable[index]
        def __setitem__(self, index, value): pass
        def __delitem__(self, index): pass
        def __bool__(self): return bool(self.iterable)
        def __nonzero__(self): return bool(self.iterable)
        def __contains__(self, o): return o in self.iterable
        def __len__(self): return len(self.iterable)
        def __copy__(self): return deque(self.iterable)
        def copy(self): return deque(self.iterable)
        def index(self, x, start=0, end=0): return 0
        def insert(self, i, x): pass
        def __add__(self, other): pass
        def __iadd__(self, other): pass
        def __mul__(self, other): pass
        def __imul__(self, other): pass
        def __rmul__(self, other): passzK
        @classmethod
        def __class_getitem__(self, item): return clsr   )base_deque_classs    r   r   r      s(    !+D  9 	9 r   c                      d} t         r| dz  } | S )Nz
    class OrderedDict(dict):
        def __reversed__(self): return self[::-1]
        def move_to_end(self, key, last=False): passzJ
        @classmethod
        def __class_getitem__(cls, item): return clsr   )base_ordered_dict_classs    r   r   r   H   s'    8  $8 	8 #"r   c                    | j                         j                  d      s| j                         j                  d      r	 | j                  d       yy# t        $ r Y yw xY w)z
    Returns True if the node corresponds to a ClassDef of the Collections.abc module
    that supports subscripting.

    :param node: ClassDef node
    _collectionscollections__class_getitem__TF)qname
startswithgetattrr
   )nodes    r   _looks_like_subscriptabler    T   s_     zz|~.$**,2I2I3	LL,-  ' 		s    A 	AAz?
@classmethod
def __class_getitem__(cls, item):
    return cls
Nc                B    t        t              }|g| j                  d<   y )Nr   )r   CLASS_GET_ITEM_TEMPLATElocals)r   contextfunc_to_adds      r   easy_class_getitem_inferencer&   m   s      67K(3}DKK#$r   c                r    t        | dt               t        r | j                  t        t
        t               y y )Nr   )r   r   r   register_transformr   r&   r    )managers    r   registerr*   t   s0    Wm5KL
 	""24M	
 r   )r   r   returnbool)N)r$   zInferenceContext | None)r)   r   r+   None)
__future__r   astroid.brain.helpersr   astroid.builderr   r   astroid.constr   astroid.contextr	   astroid.exceptionsr
   astroid.managerr   astroid.nodes.scoped_nodesr   r   r   r   r    r"   r&   r*   r   r   r   <module>r6      sF   
 # : / # , 6 * /'T	#$ 5

r   