o
    g                     @   s   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 Zd	d
 Zdd Zee
 de dedefddZdZdddZerUe
 eee dS dS )    )register_module_extender)extract_nodeparse	PY39_PLUS)AttributeInferenceError)AstroidManager)ClassDefc                   C   s   t dt  t  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 r   r   ]/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/astroid/brain/brain_collections.py_collections_transform   s   r   c                  C      d} t r| d7 } | 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, x, i): 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_classr   r   r   r
   #   s   "r
   c                  C   r   )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_classr   r   r   r   M   s   r   collectionsnodereturnc                 C   sF   |   ds|   dr!z| d W dS  ty    Y dS 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
    _collectionsr   __class_getitem__TF)qname
startswithgetattrr   )r   r   r   r   _looks_like_subscriptable\   s   
r   z?
@classmethod
def __class_getitem__(cls, item):
    return cls
Nc                 C   s   t t}|g| jd< d S )Nr   )r   CLASS_GET_ITEM_TEMPLATElocals)r   contextfunc_to_addr   r   r   easy_class_getitem_inferenceu   s   r   )N)astroid.brain.helpersr   astroid.builderr   r   astroid.constr   astroid.exceptionsr   astroid.managerr   astroid.nodes.scoped_nodesr	   r   r
   r   boolr   r   r   register_transformr   r   r   r   <module>   s$   *
