
    5 f                        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dS )    )annotations)register_module_extender)extract_nodeparse	PY39_PLUS)InferenceContext)AttributeInferenceError)AstroidManager)ClassDefc                 \    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     U/var/www/equiseq/venv/lib/python3.11/site-packages/astroid/brain/brain_collections.py_collections_transformr      s7    	 --	 

	
 
 
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 	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 	8 #"r   noder   returnboolc                    |                                                      d          s'|                                                      d          r(	 |                     d           dS # t          $ r Y nw xY wdS )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
   )r   s    r   _looks_like_subscriptabler"   T   s     zz||~.. $**,,2I2I3 3 	LL,---4& 	 	 	D	5s   A' '
A43A4z?
@classmethod
def __class_getitem__(cls, item):
    return cls
NcontextInferenceContext | Nonec                D    t          t                    }|g| j        d<   d S )Nr   )r   CLASS_GET_ITEM_TEMPLATElocals)r   r#   func_to_adds      r   easy_class_getitem_inferencer)   m   s'     677K(3}DK#$$$r   managerr   Nonec                    t          | dt                     t          r(|                     t          t
          t                     d S d S )Nr   )r   r   r   register_transformr   r)   r"   )r*   s    r   registerr.   t   sT    Wm5KLLL 

 	""24M	
 	
 	
 	
 	

 
r   )r   r   r   r   )N)r#   r$   )r*   r   r   r+   )
__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>r7      s  
 # " " " " " : : : : : : / / / / / / / / # # # # # # , , , , , , 6 6 6 6 6 6 * * * * * * / / / / / /  ' ' 'T	# 	# 	#   $ 5 5 5 5 5

 

 

 

 

 

r   