+
    i                        ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ]'       d   ^ R
IHt R tR R ltR tR tR R ltRtRR R lltR R ltR# )    )annotations)TYPE_CHECKING)register_module_extender)AstroidBuilderextract_nodeparse)
PY313_PLUS)InferenceContext)AttributeInferenceError)AstroidManager)ClassDef)nodesc                 T    \        R \        4       ,           \        4       ,           4      # )z
    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-      - -./ 0 0r   c                   V ^8  d   QhRR/# )   returnznodes.Moduler   )formats   "r   __annotate__r      s       r   c                 F    \        \        4       4      P                  R4      # )z1See https://github.com/python/cpython/pull/124735zfrom _collections_abc import *)r   r   string_buildr   r   r   _collections_abc_313_transformr      s     .*+88( r   c                 
    R p V # )a  
    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): pass
        @classmethod
        def __class_getitem__(self, item): return clsr   )base_deque_classs    r   r   r   &   s    #9H r   c                 
    R p V # )z
    class OrderedDict(dict):
        def __reversed__(self): return self[::-1]
        def move_to_end(self, key, last=False): pass
        @classmethod
        def __class_getitem__(cls, item): return clsr   )base_ordered_dict_classs    r   r   r   N   s    8 #"r   c                    V ^8  d   QhRRRR/# )r   noder   r   boolr   )r   s   "r   r   r   X   s      H  r   c                    V P                  4       P                  R4      '       g&   V P                  4       P                  R4      '       d    V P                  R4       R# R#   \         d     R# i ; i)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,   X   sg     zz|~..$**,2I2I3 3	LL,-  ' 		s   A! !A0/A0z?
@classmethod
def __class_getitem__(cls, item):
    return cls
Nc                   V ^8  d   QhRR/# )r   contextzInferenceContext | Noner   )r   s   "r   r   r   q   s     5 50G 5r   c                D    \        \        4      pV.V P                  R &   R# )r(   N)r   CLASS_GET_ITEM_TEMPLATElocals)r#   r.   func_to_adds   && r   easy_class_getitem_inferencer3   q   s      67K(3}DKK#$r   c                    V ^8  d   QhRRRR/# )r   managerr   r   Noner   )r   s   "r   r   r   x   s     
 
n 
 
r   c                    \        V R \        4       V P                  \        \        \
        4       \        '       d   \        V R\        4       R# R# )r'   zcollections.abcN)r   r   register_transformr   r3   r,   r	   r   )r5   s   &r   registerr9   x   sE    Wm5KL .0I z &(F	
 r   )N)
__future__r   typingr   astroid.brain.helpersr   astroid.builderr   r   r   astroid.constr	   astroid.contextr
   astroid.exceptionsr   astroid.managerr   astroid.nodes.scoped_nodesr   astroidr   r   r   r   r   r,   r0   r3   r9   r   r   r   <module>rD      sW   
 #   : ? ? $ , 6 * /0%P#$ 5
r   