o
    ð›h6v  ã                   @   sp  d Z ddlZddl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mZmZmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZ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&m'Z'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 dZ4dZ5dd„ Z6dd„ Z7			d�dd„Z8e8ddd�d d!„ ƒZ9e8dƒd"d#„ ƒZ:e8d$ƒd‘d%d&„ƒZ;e8d'ƒd(d)„ ƒZ<G d*d+„ d+eƒZ=e8d,dd-�d.d/„ ƒZ>G d0d1„ d1e-ƒZ?e8d2ddd3�d4d5„ ƒZ@e8d6ddd7�d8d9„ ƒZAG d:d;„ d;eƒZBe8d2ƒd<d=„ ƒZCG d>d?„ d?eƒZDG d@dA„ dAeƒZEG dBdC„ dCeƒZFe8d2ddd3�dDdE„ ƒZGG dFdG„ dGe-eƒZHe8dHddI�dJdK„ ƒZIdLdM„ ZJG dNdO„ dOeƒZKG dPdQ„ dQeKƒZLG dRdS„ dSe3ƒZMG dTdU„ dUeƒZNdVdW„ ZOdXdY„ ZPe8dZƒd[d\„ ƒZQe8d]ƒd^d_„ ƒZRd`da„ ZSG dbdc„ dcee!ƒZTG ddde„ dee2ƒZUG dfdg„ dge+ƒZVG dhdi„ dieƒZWe8dHƒdjdk„ ƒZXG dldm„ dmeƒZYG dndo„ doee#ƒZZe8dpddd3�dqdr„ ƒZ[dsdt„ Z\e8dpddI�dudv„ ƒZ]e;e<e>e@eAe9e:eCeGeIdwœ
eQeQdxœdydz„ d{dz„ d|œd}eJieOePeXd~œdeQid€eRid�e[id‚eQidƒdz„ d„dz„ d…œd†eSieSeSd‡œeSeSd‡œe\ej^j_ƒe\ej^j`ƒe\ej^jaƒe]dˆœd‰œZbdŠd‹„ ZcG dŒd�„ d�eƒZddŽd�„ ZedS )’a²  
Implementations of standard library functions, because it's not possible to
understand them with Jedi.

To add a new implementation, create a function and add it to the
``_implemented`` dict at the bottom of this module.

Note that this module exists only to implement very specific functionality in
the standard library. The usual way to understand the standard library is the
compiled module that returns the types for C-builtins.
é    N)Ú	Parameter)Údebug)Úsafe_property)Úget_str_or_none)Úiterate_argument_clinicÚ
ParamIssueÚrepack_with_argument_clinicÚAbstractArgumentsÚTreeArgumentsWrapper)Úanalysis)Úcompiled)ÚAnonymousMethodExecutionContextÚMethodExecutionContext)ÚContextualizedNodeÚ	NO_VALUESÚValueSetÚValueWrapperÚLazyValueWrapper)Ú
ClassValueÚModuleValue)Ú
ClassMixin)ÚFunctionMixin)Úiterable)ÚLazyTreeValueÚLazyKnownValueÚLazyKnownValues)Ú	ValueNameÚBaseTreeParamName)ÚAttributeOverwriteÚpublish_methodÚParserTreeFilterÚ
DictFilter)ÚAbstractSignatureÚSignatureWrappera  _property = property
_tuple = tuple
from operator import itemgetter as _itemgetter
from collections import OrderedDict

class {typename}(tuple):
    __slots__ = ()

    _fields = {field_names!r}

    def __new__(_cls, {arg_list}):
        'Create new instance of {typename}({arg_list})'
        return _tuple.__new__(_cls, ({arg_list}))

    @classmethod
    def _make(cls, iterable, new=tuple.__new__, len=len):
        'Make a new {typename} object from a sequence or iterable'
        result = new(cls, iterable)
        if len(result) != {num_fields:d}:
            raise TypeError('Expected {num_fields:d} arguments, got %d' % len(result))
        return result

    def _replace(_self, **kwds):
        'Return a new {typename} object replacing specified fields with new values'
        result = _self._make(map(kwds.pop, {field_names!r}, _self))
        if kwds:
            raise ValueError('Got unexpected field names: %r' % list(kwds))
        return result

    def __repr__(self):
        'Return a nicely formatted representation string'
        return self.__class__.__name__ + '({repr_fmt})' % self

    def _asdict(self):
        'Return a new OrderedDict which maps field names to their values.'
        return OrderedDict(zip(self._fields, self))

    def __getnewargs__(self):
        'Return self as a plain tuple.  Used by copy and pickle.'
        return tuple(self)

    # These methods were added by Jedi.
    # __new__ doesn't really work with Jedi. So adding this to nametuples seems
    # like the easiest way.
    def __init__(self, {arg_list}):
        'A helper function for namedtuple.'
        self.__iterable = ({arg_list})

    def __iter__(self):
        for i in self.__iterable:
            yield i

    def __getitem__(self, y):
        return self.__iterable[y]

{field_defs}
zW    {name} = _property(_itemgetter({index:d}), doc='Alias for field number {index:d}')
c                    ó   ‡ fdd„}|S )Nc                    s¼   ‡ ‡‡fdd„}zˆj j}W n ty   Y |ƒ S w ˆj}|d ur(| ¡ r(d}n|d ur5| ¡ r5| ¡ }n|ƒ S ˆ ¡ s@ˆ ¡ rC|ƒ S zt	| | }W n t
yV   Y |ƒ S w |ˆˆ |d�S )Nc                      s   ˆˆˆ d�S )N©Ú	arguments© r'   )r&   ÚcallbackÚvaluer'   úIc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/plugins/stdlib.pyÚcallj   ó   z&execute.<locals>.wrapper.<locals>.callÚbuiltins)r&   r(   )ÚnameÚstring_nameÚAttributeErrorÚparent_contextÚis_builtins_moduleÚ	is_moduleÚ
py__name__Zis_bound_methodÚis_instanceÚ_implementedÚKeyError)r)   r&   r+   Úobj_nameÚpÚmodule_nameÚfunc©r(   )r&   r)   r*   Úwrapperi   s,   é
üzexecute.<locals>.wrapperr'   )r(   r=   r'   r<   r*   Úexecuteh   s   r>   c                 C   s6   zt | ¡ ƒ| \}}W | ¡ S  ty   t Y S w ©N)ÚlistÚunpackÚ
IndexErrorr   Úinfer)Úinference_stater&   ÚindexÚkeyÚ
lazy_valuer'   r'   r*   Ú_follow_param‹   s   ýÿrH   Fc                    s   ‡ ‡‡‡‡‡fdd„}|S )zL
    Works like Argument Clinic (PEP 436), to validate function params.
    c                    s   ‡‡ ‡‡‡‡‡fdd„}|S )Nc                    s¦   zt t| j|ˆ ƒƒ}W n ty   t Y S w tjd|  dd� i }ˆr)|j|d< ˆr/| |d< ˆr6| j|d< ˆr<||d< ˆrB||d< ˆ|i |¤Ž}tjd	|dd� |S )
Nzbuiltin start %sZMAGENTA)ÚcolorÚcontextr)   rD   r&   r(   zbuiltin end: %s)Útupler   rD   r   r   r   ZdbgrJ   )r)   r&   r(   ÚargsÚkwargsÚresult)Úclinic_stringr;   Úwant_argumentsÚwant_callbackÚwant_contextÚwant_inference_stateÚ
want_valuer'   r*   r=   œ   s,   
ÿÿ

z+argument_clinic.<locals>.f.<locals>.wrapperr'   ©r;   r=   ©rO   rP   rQ   rR   rS   rT   ©r;   r*   Úf›   s   zargument_clinic.<locals>.fr'   )rO   rT   rR   rP   rS   rQ   rX   r'   rV   r*   Úargument_clinic”   s   rY   ziterator[, default], /T)rS   c                 C   s   ||   d¡ ¡ B S )NÚ__next__©Úpy__getattribute__Úexecute_with_values)Ú	iteratorsÚdefaultsrD   r'   r'   r*   Úbuiltins_next·   s   r`   c                 C   s   |   d¡ ¡ S )NÚ__iter__r[   )Ziterators_or_callablesr_   r'   r'   r*   Úbuiltins_iter¾   s   rb   zobject, name[, default], /c                 C   sD   | D ]}|D ]}t |ƒ}|d u rt d¡ q| |¡    S qtS )Nzgetattr called without str)r   r   Úwarningr\   r   )ÚobjectsÚnamesr_   r)   r.   Ústringr'   r'   r*   Úbuiltins_getattrÄ   s   
úrg   zobject[, bases, dict], /c                 C   s   |s|rt S |  ¡ S r?   )r   Úpy__class__)rd   ÚbasesZdictsr'   r'   r*   Úbuiltins_typeÒ   s   rj   c                   @   s2   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	d
„ZdS )ÚSuperInstancez-To be used like the object ``super`` returns.c                 C   s   || _ || _d S r?   )rD   Ú	_instance)ÚselfrD   Úinstancer'   r'   r*   Ú__init__Ý   s   
zSuperInstance.__init__c                 C   s   | j  ¡  ¡ S r?   )rl   rh   Úpy__bases__©rm   r'   r'   r*   Ú
_get_basesá   s   zSuperInstance._get_basesc                 C   s*   |   ¡ d  ¡  ¡ }|s| jS tt|ƒƒS ©Nr   )rr   rC   r]   rl   ÚnextÚiter)rm   Zobjsr'   r'   r*   Ú_get_wrapped_valueä   s   z SuperInstance._get_wrapped_valueNc                 c   s:   � |   ¡ D ]}| ¡  ¡ D ]}| ¡ D ]}|V  qqqd S r?   )rr   rC   r]   Úget_filters)rm   Úorigin_scopeÚbr)   rX   r'   r'   r*   rw   ì   s   €ÿÿÿzSuperInstance.get_filtersr?   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ro   rr   rv   rw   r'   r'   r'   r*   rk   Û   s    rk   z[type[, value]], /)rR   c                 C   sD   d }t |tƒr|j}nt |tƒr|j}|d u rtS tt|j|ƒhƒS r?   )Ú
isinstancer   rn   r   r   r   rk   rD   )Útypesrd   rJ   rn   r'   r'   r*   Úbuiltins_superó   s   

r€   c                       s6   e Zd Z‡ fdd„Zd	dd„Zedƒdd„ ƒZ‡  ZS )
ÚReversedObjectc                    ó   t ƒ  |¡ || _d S r?   )Úsuperro   Ú
_iter_list)rm   Zreversed_objZ	iter_list©Ú	__class__r'   r*   ro      ó   
zReversedObject.__init__Nc                 C   ó   | j S r?   )r„   )rm   Zcontextualized_noder'   r'   r*   Ú
py__iter__  ó   zReversedObject.py__iter__rZ   c                 C   s   t  dd„ | jD ƒ¡S )Nc                 s   ó   � | ]}|  ¡ V  qd S r?   ©rC   ©Ú.0rG   r'   r'   r*   Ú	<genexpr>	  s   € 
ÿz'ReversedObject._next.<locals>.<genexpr>)r   Ú	from_setsr„   ©rm   r&   r'   r'   r*   Ú_next  s   
ÿzReversedObject._nextr?   )rz   r{   r|   ro   r‰   r   r’   Ú__classcell__r'   r'   r…   r*   r�   ÿ   s
    
r�   zsequence, /©rT   rP   c                 C   sf   t | ¡ ƒ\}}d }t|tƒrt|j|jƒ}t|  |¡ƒ}|j	j
 d¡ ¡ \}tt|tt|ƒƒƒgƒS )NÚIterator)rt   rA   r~   r   r   rJ   Údatar@   ÚiteraterD   Ztyping_moduler\   r]   r   r�   Úreversed)Ú	sequencesr)   r&   rF   rG   ZcnZorderedÚseqr'   r'   r*   Úbuiltins_reversed  s   
r›   zvalue, type, /)rP   rS   c              	      s  t ƒ }| D ]y}| ¡ }z|j W n ty    t ddgƒ}Y  n_w t| ¡ ƒ‰|D ]T}| ¡ r7| |ˆv ¡ q)|jj	dkr^| 
¡  ¡ r^t dd„ | ¡ D ƒ¡}| t‡fdd„|D ƒƒ¡ q)t| ¡ ƒd \}	}
t|
tƒr}|
j}d| }t |
jd	||¡ q)qt‡ fd
d„|D ƒƒS )NTFrK   c                 s   r‹   r?   rŒ   r�   r'   r'   r*   r�   7  s
   € ÿ
ÿz&builtins_isinstance.<locals>.<genexpr>c                 3   s   � | ]}|ˆ v V  qd S r?   r'   )rŽ   Úcls)Úmror'   r*   r�   ;  ó   € é   z[TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types, not %s.ztype-error-isinstancec                 3   s    � | ]}t  ˆ t|ƒ¡V  qd S r?   )r   Zbuiltin_from_nameÚstr)rŽ   ry   )rD   r'   r*   r�   E  s
   € ÿ
ÿ)Úsetrh   rp   r0   r@   Ú	py__mro__Úis_classÚaddr.   r/   Úget_root_contextr2   r   r�   r—   ÚanyrA   r~   r   r–   r   rJ   )rd   r   r&   rD   Zbool_resultsÚorœ   Z
cls_or_tupÚclassesÚ_rG   ÚnodeÚmessager'   )rD   r�   r*   Úbuiltins_isinstance!  s@   
û
ÿ
þ
þ€îþr¬   c                   @   ó   e Zd Zdd„ ZdS )ÚStaticMethodObjectc                 C   s   t | jgƒS r?   )r   Ú_wrapped_value©rm   rn   Úclass_valuer'   r'   r*   Ú	py__get__L  r,   zStaticMethodObject.py__get__N©rz   r{   r|   r²   r'   r'   r'   r*   r®   K  ó    r®   c                 C   ó   t dd„ | D ƒƒS )Nc                 s   ó   � | ]}t |ƒV  qd S r?   )r®   ©rŽ   rX   r'   r'   r*   r�   R  rž   z(builtins_staticmethod.<locals>.<genexpr>©r   ©Ú	functionsr'   r'   r*   Úbuiltins_staticmethodP  ó   r»   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚClassMethodObjectc                    r‚   r?   ©rƒ   ro   Ú	_function)rm   Zclass_method_objÚfunctionr…   r'   r*   ro   V  r‡   zClassMethodObject.__init__c                    s    t ‡ ‡fdd„ˆj d¡D ƒƒS )Nc                    s   g | ]	}t |ˆ ˆjƒ‘qS r'   )ÚClassMethodGetr¿   )rŽ   Ú__get__©r±   rm   r'   r*   Ú
<listcomp>[  s    ÿÿz/ClassMethodObject.py__get__.<locals>.<listcomp>rÂ   )r   r¯   r\   r°   r'   rÃ   r*   r²   Z  s   
þzClassMethodObject.py__get__)rz   r{   r|   ro   r²   r“   r'   r'   r…   r*   r½   U  s    r½   c                       ó,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )rÁ   c                    ó   t ƒ  |¡ || _|| _d S r?   )rƒ   ro   Ú_classr¿   )rm   Ú
get_methodÚklassrÀ   r…   r'   r*   ro   b  ó   
zClassMethodGet.__init__c                    s   ‡ fdd„ˆ j  ¡ D ƒS )Nc                    s   g | ]}|  ˆ j¡‘qS r'   )Úbindr¿   )rŽ   Úsigrq   r'   r*   rÄ   h  ó    z1ClassMethodGet.get_signatures.<locals>.<listcomp>)r¿   Úget_signaturesrq   r'   rq   r*   rÎ   g  s   zClassMethodGet.get_signaturesc                 C   s   | j  t| j|ƒ¡S r?   )r¿   r>   ÚClassMethodArgumentsrÇ   r‘   r'   r'   r*   Ú
py__call__j  s   zClassMethodGet.py__call__)rz   r{   r|   ro   rÎ   rÐ   r“   r'   r'   r…   r*   rÁ   a  ó    rÁ   c                       ó&   e Zd Z‡ fdd„Zddd„Z‡  ZS )rÏ   c                    s   t ƒ  |¡ || _d S r?   )rƒ   ro   rÇ   )rm   rÉ   r&   r…   r'   r*   ro   o  r‡   zClassMethodArguments.__init__Nc                 c   s.   � d t | jƒfV  | j |¡D ]}|V  qd S r?   )r   rÇ   Z_wrapped_argumentsrA   )rm   r;   Úvaluesr'   r'   r*   rA   s  s
   €ÿzClassMethodArguments.unpackr?   )rz   r{   r|   ro   rA   r“   r'   r'   r…   r*   rÏ   n  ó    rÏ   c                    s   t ‡ fdd„|j|d�D ƒƒS )Nc                 3   ó$   � | ]}ˆ D ]}t ||ƒV  qqd S r?   )r½   )rŽ   Zclass_method_objectrÀ   r¹   r'   r*   r�   {  ó   € ýþÿz'builtins_classmethod.<locals>.<genexpr>r%   ©r   rÐ   )rº   r)   r&   r'   r¹   r*   Úbuiltins_classmethody  s   
þrØ   c                       sH   e Zd ZdZ‡ fdd„Zdd„ Zedƒedƒedƒd	d
„ ƒƒƒZ‡  ZS )ÚPropertyObjectÚpropertyc                    r‚   r?   r¾   )rm   Zproperty_objrÀ   r…   r'   r*   ro   …  r‡   zPropertyObject.__init__c                 C   s   |d u r	t | gƒS | j |¡S r?   )r   r¿   r]   r°   r'   r'   r*   r²   ‰  s   
zPropertyObject.py__get__ÚdeleterÚgetterÚsetterc                 C   s
   t | hƒS r?   r¸   r‘   r'   r'   r*   Ú_return_selfŽ  s   
zPropertyObject._return_self)	rz   r{   r|   Úapi_typero   r²   r   rÞ   r“   r'   r'   r…   r*   rÙ   ‚  s    rÙ   úfunc, /)rQ   c                    s   t ‡ fdd„|ƒ D ƒƒS )Nc                 3   rÕ   r?   )rÙ   )rŽ   Zproperty_valuerÀ   r¹   r'   r*   r�   —  rÖ   z$builtins_property.<locals>.<genexpr>r¸   )rº   r(   r'   r¹   r*   Úbuiltins_property•  s   þrá   c                 C   s8  | j }d}t||dƒD ]}t|ƒ}|dur|} nqt||dƒ}|s$tS t|ƒd }t|ƒ}	|	dur;|	 dd¡ ¡ }
nt|tj	ƒrRdd„ | 
¡ D ƒ}
d	d„ |
D ƒ}
ntS tj|t|
ƒt|
ƒtt|
ƒƒ d
d¡dd… dd dd„ t|
ƒD ƒ¡d�}|j |¡}t| ¡ ƒ}t||tj|dd�d� ¡ }tt|||ƒgƒS )z˜
    Implementation of the namedtuple function.

    This has to be done by processing the namedtuple class template and
    inferring the result.

    Zjedi_unknown_namedtupler   NrŸ   ú,ú c                 S   s"   g | ]}|  ¡ D ]}t|ƒ‘qqS r'   )rC   r   )rŽ   rG   Úvr'   r'   r*   rÄ   ¹  s    ýþÿz*collections_namedtuple.<locals>.<listcomp>c                 S   s   g | ]}|d ur|‘qS r?   r'   r·   r'   r'   r*   rÄ   ¾  rÍ   ú'Ú éÿÿÿÿÚ
c                 s   s"   � | ]\}}t j||d �V  qdS ))rE   r.   N)Ú_NAMEDTUPLE_FIELD_TEMPLATEÚformat)rŽ   rE   r.   r'   r'   r*   r�   É  s   € ÿz)collections_namedtuple.<locals>.<genexpr>)ÚtypenameÚfield_namesÚ
num_fieldsÚarg_listÚrepr_fmtZ
field_defsT)Úkeepends)Z
code_lines)rD   rH   r   r   r@   ÚreplaceÚsplitr~   r   ÚSequencer‰   Ú_NAMEDTUPLE_CLASS_TEMPLATErê   rK   ÚlenÚreprÚjoinÚ	enumerateZgrammarÚparsert   Ziter_classdefsr   ÚparsoÚsplit_linesÚ
as_contextr   r   )r)   r&   r(   rD   r.   ÚcÚxZparam_valuesÚ_fieldsrf   ÚfieldsÚcodeÚmoduleZgenerated_classr1   r'   r'   r*   Úcollections_namedtuplež  sP   þþ
ÿúþýr  c                       sF   e Zd Zd‡ fdd„	Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z‡  Z	S )ÚPartialObjectNc                    rÆ   r?   )rƒ   ro   Ú
_argumentsrl   )rm   Zactual_valuer&   rn   r…   r'   r*   ro   Ù  rÊ   zPartialObject.__init__c                 C   s8   t |dƒ\}}|d us|d u rt d| j¡ d S | ¡ S )N)NNz(Partial should have a proper function %s)rt   r   rc   r  rC   )rm   Úunpacked_argumentsrF   rG   r'   r'   r*   Ú_get_functionsÞ  s
   zPartialObject._get_functionsc                    sz   | j  ¡ }|  |¡}|d u rg S d‰ | jd urd‰ tƒ ‰|D ]\}}|d u r+ˆ d7 ‰ qˆ |¡ q‡ ‡fdd„| ¡ D ƒS )Nr   rŸ   c                    s   g | ]}t |ˆ ˆƒ‘qS r'   )ÚPartialSignature)rŽ   Ús©Z	arg_countÚkeysr'   r*   rÄ   ô  rÍ   z0PartialObject.get_signatures.<locals>.<listcomp>)r  rA   r  rl   r¡   r¤   rÎ   )rm   r  ÚfuncsrF   r©   r'   r
  r*   rÎ   å  s   



zPartialObject.get_signaturesc                 C   s2   |   | j ¡ ¡}|d u rtS | t| j|| jƒ¡S r?   )r  r  rA   r   r>   ÚMergedPartialArgumentsrl   )rm   r&   r  r'   r'   r*   rÐ   ö  s   ÿzPartialObject.py__call__c                 C   s4   |   | j ¡ ¡}|du rdS |D ]}| ¡   S dS )z¿
        In CPython partial does not replace the docstring. However we are still
        imitating it here, because we want this docstring to be worth something
        for the user.
        Nræ   )r  r  rA   Ú	py__doc__)rm   Z	callablesZ	callable_r'   r'   r*   r  ÿ  s   zPartialObject.py__doc__c                 C   s
   t | gƒS r?   r¸   r°   r'   r'   r*   r²     s   
zPartialObject.py__get__r?   )
rz   r{   r|   ro   r  rÎ   rÐ   r  r²   r“   r'   r'   r…   r*   r  Ø  s    	r  c                   @   r­   )ÚPartialMethodObjectc                 C   s(   |d u r	t | gƒS t t| j| j|ƒgƒS r?   )r   r  r¯   r  r°   r'   r'   r*   r²     s   
zPartialMethodObject.py__get__Nr³   r'   r'   r'   r*   r    r´   r  c                       rÒ   )r  c                    rÆ   r?   )rƒ   ro   Ú_skipped_arg_countÚ_skipped_arg_set)rm   Zwrapped_signatureZskipped_arg_countZskipped_arg_setr…   r'   r*   ro     rÊ   zPartialSignature.__init__Fc                    s&   ˆ j  ¡ ˆ jd … }‡ fdd„|D ƒS )Nc                    s   g | ]
}|j ˆ jvr|‘qS r'   )r/   r  )rŽ   Únrq   r'   r*   rÄ     s    z4PartialSignature.get_param_names.<locals>.<listcomp>)Z_wrapped_signatureÚget_param_namesr  )rm   Úresolve_starsre   r'   rq   r*   r    s   z PartialSignature.get_param_names©F©rz   r{   r|   ro   r  r“   r'   r'   r…   r*   r    s    r  c                   @   s    e Zd Zddd„Zddd„ZdS )r  Nc                 C   s   || _ || _|| _d S r?   )Ú_partial_argumentsÚ_call_argumentsrl   )rm   Zpartial_argumentsZcall_argumentsrn   r'   r'   r*   ro   #  s   
zMergedPartialArguments.__init__c                 c   s^   � | j  |¡}t|d ƒ | jd urd t| jƒfV  |D ]}|V  q| j |¡D ]}|V  q'd S r?   )r  rA   rt   rl   r   r  )rm   ZfuncdefÚunpackedZkey_lazy_valuer'   r'   r*   rA   (  s   €

ÿzMergedPartialArguments.unpackr?   )rz   r{   r|   ro   rA   r'   r'   r'   r*   r  "  s    
r  c                    ó   t ‡ fdd„|  ˆ ¡D ƒƒS )Nc                 3   ó   � | ]}t |ˆ ƒV  qd S r?   )r  ©rŽ   rn   r%   r'   r*   r�   6  ó
   € ÿ
ÿz$functools_partial.<locals>.<genexpr>r×   ©r)   r&   r(   r'   r%   r*   Úfunctools_partial5  ó   þr  c                    r  )Nc                 3   r  r?   )r  r  r%   r'   r*   r�   =  r  z*functools_partialmethod.<locals>.<genexpr>r×   r  r'   r%   r*   Úfunctools_partialmethod<  r   r!  zfirst, /c                 C   s   | S r?   r'   )Zfirstsr'   r'   r*   Ú_return_first_paramC  s   r"  rš   c                 C   s   t  dd„ | D ƒ¡S )Nc                 s   s&   � | ]}|  ¡ D ]}| ¡ V  qqd S r?   )r‰   rC   )rŽ   ÚsequencerG   r'   r'   r*   r�   J  s   € ýþÿz!_random_choice.<locals>.<genexpr>)r   r�   )r™   r'   r'   r*   Ú_random_choiceH  s   
þr$  c                 C   s>   t | j|dƒD ]}| ¡ rtt|ƒgƒ  S t| gƒ  S tS rs   )rH   rD   r£   r   ÚDataclassWrapperr   )r)   r&   r(   rý   r'   r'   r*   Ú
_dataclassQ  s
   r&  c                   @   r­   )r%  c              
   C   s¼   g }t t|  ¡ ƒƒD ]M}t|tƒrW| ¡  ¡ }t| ¡ dd„ d�D ]5}|j	 
¡ }|jd }|jdkrV|jdkrVt|jƒdk rAd }n|jd }| t|j|j	|jd |d	�¡ q!q
t||ƒgS )
Nc                 S   rˆ   r?   )Ú	start_pos)r.   r'   r'   r*   Ú<lambda>c  s    z1DataclassWrapper.get_signatures.<locals>.<lambda>)rF   rŸ   Z	expr_stmtÚ	annassigné   é   )r1   Ú	tree_nameÚannotation_nodeÚdefault_node)r˜   r@   r¢   r~   r%  rü   Zget_global_filterÚsortedrÓ   r,  Zget_definitionÚchildrenÚtyperõ   ÚappendÚDataclassParamNamer1   ÚDataclassSignature)rm   Úparam_namesrœ   Úfilter_r.   Údr)  Údefaultr'   r'   r*   rÎ   [  s&   



ü€zDataclassWrapper.get_signaturesN)rz   r{   r|   rÎ   r'   r'   r'   r*   r%  Z  r´   r%  c                       rÒ   )r4  c                    r‚   r?   )rƒ   ro   Ú_param_names)rm   r)   r5  r…   r'   r*   ro   u  r‡   zDataclassSignature.__init__Fc                 C   rˆ   r?   )r9  )rm   r  r'   r'   r*   r  y  rŠ   z"DataclassSignature.get_param_namesr  r  r'   r'   r…   r*   r4  t  rÔ   r4  c                       rÅ   )r3  c                    s   t ƒ  ||¡ || _|| _d S r?   )rƒ   ro   r-  r.  )rm   r1   r,  r-  r.  r…   r'   r*   ro   ~  s   
zDataclassParamName.__init__c                 C   s   t jS r?   )r   ÚPOSITIONAL_OR_KEYWORDrq   r'   r'   r*   Úget_kindƒ  rŠ   zDataclassParamName.get_kindc                 C   s   | j d u rtS | j | j ¡S r?   )r-  r   r1   Z
infer_noderq   r'   r'   r*   rC   †  s   
zDataclassParamName.infer)rz   r{   r|   ro   r;  rC   r“   r'   r'   r…   r*   r3  }  rÑ   r3  c                       s,   e Zd Z‡ fdd„Zedƒdd„ ƒZ‡  ZS )ÚItemGetterCallablec                    r‚   r?   )rƒ   ro   Ú_args_value_set)rm   rn   Úargs_value_setr…   r'   r*   ro   Ž  r‡   zItemGetterCallable.__init__zitem, /c              	      sn   t }| jD ]/}t| ¡ ƒ}t|ƒdkr |ˆ  |d  ¡ d ¡O }q|tt 	| j
j‡ fdd„|D ƒ¡gƒO }q|S )NrŸ   r   c                    s    g | ]}t ˆ  | ¡ d ¡ƒ‘qS r?   )r   Úget_itemrC   r�   ©Úitem_value_setr'   r*   rÄ   �  s    ÿÿz1ItemGetterCallable.py__call__.<locals>.<listcomp>)r   r=  r@   r‰   rõ   r?  rC   r   r   ZFakeListr¯   rD   )rm   rA  Z	value_setZ
args_valueZlazy_valuesr'   r@  r*   rÐ   ’  s   

þþzItemGetterCallable.py__call__)rz   r{   r|   ro   r   rÐ   r“   r'   r'   r…   r*   r<  �  s    r<  c                 C   rµ   )Nc                 s   r¶   r?   )ÚWrapsCallable©rŽ   r;   r'   r'   r*   r�   §  rž   z#_functools_wraps.<locals>.<genexpr>r¸   )r  r'   r'   r*   Ú_functools_wraps¥  r¼   rD  c                   @   s   e Zd Zedƒdd„ ƒZdS )rB  rà   c                    s   t ‡ fdd„|D ƒƒS )Nc                    s   h | ]}t |ˆ jƒ’qS r'   )ÚWrappedr¯   rC  rq   r'   r*   Ú	<setcomp>°  rÍ   z+WrapsCallable.py__call__.<locals>.<setcomp>r¸   )rm   r  r'   rq   r*   rÐ   ®  s   zWrapsCallable.py__call__N)rz   r{   r|   r   rÐ   r'   r'   r'   r*   rB  ª  s    rB  c                       s0   e Zd Z‡ fdd„Zedd„ ƒZdd„ Z‡  ZS )rE  c                    r‚   r?   )rƒ   ro   Ú_original_function)rm   r;   Zoriginal_functionr…   r'   r*   ro   ´  r‡   zWrapped.__init__c                 C   s   | j jS r?   )rG  r.   rq   r'   r'   r*   r.   ¸  s   zWrapped.namec                 C   s   | gS r?   r'   rq   r'   r'   r*   Úget_signature_functions¼  rŠ   zWrapped.get_signature_functions)rz   r{   r|   ro   rÚ   r.   rH  r“   r'   r'   r…   r*   rE  ³  s
    
rE  z*args, /c                    s   t ‡ fdd„| |¡D ƒƒS )Nc                    s   g | ]}t |ˆ ƒ‘qS r'   )r<  r  ©r>  r'   r*   rÄ   Â  s    ÿÿz(_operator_itemgetter.<locals>.<listcomp>r×   )r>  r)   r&   r'   rI  r*   Ú_operator_itemgetterÀ  s   þrJ  c                    s   t dddd�‡ fdd„ƒ}|S )Nz	string, /Tr”   c                    s*   ‡‡ fdd„}t |ƒ ƒ}|r|S | |¡S )Nc                  3   s8   � ˆD ]} t | ƒ}|d urˆ |ƒ}t | j|¡V  qd S r?   )r   r   Úcreate_simple_objectrD   )r)   r	  )r;   Ústringsr'   r*   r—   Ë  s   €€üz?_create_string_input_function.<locals>.wrapper.<locals>.iterater×   )rL  r)   r&   r—   rÓ   rW   )rL  r*   r=   É  s
   

z._create_string_input_function.<locals>.wrapper)rY   rU   r'   rW   r*   Ú_create_string_input_functionÈ  s   rM  c                 C   sš   t | ƒdkrJd}| \}d}| ¡ D ].}| ¡ }t |ƒdkr! |ƒ S ttt|ƒƒƒ}|d u r1 |ƒ S |s9|tjj7 }||7 }d}qt	t
 |j|¡gƒS |ƒ S )NrŸ   ræ   TF)rõ   r‰   rC   r   rt   ru   ÚosÚpathÚsepr   r   rK  rD   )Zargs_setr(   rf   r#  Zis_firstrG   Zstring_valuesr	  r'   r'   r*   Ú_os_path_joinØ  s&   
÷úrQ  )
Úgetattrr1  rƒ   r˜   r~   rt   ru   ÚstaticmethodÚclassmethodrÚ   )ÚcopyÚdeepcopyc                 C   ó   t S r?   ©r   r  r'   r'   r*   r(     ó    r(  c                 C   rW  r?   rX  r  r'   r'   r*   r(    rY  )ÚloadÚloadsÚ
namedtuple)ÚpartialÚpartialmethodÚwrapsÚproxyÚchoiceÚ
itemgetterÚabstractmethodc                 C   rW  r?   rX  r  r'   r'   r*   r(    rY  c                 C   rW  r?   rX  r  r'   r'   r*   r(     rY  )Ú_aliasÚruntime_checkableÚ	dataclass)ZdefineÚfrozen)ÚdirnameÚabspathÚrelpathr÷   )r-   rU  ÚjsonÚcollectionsÚ	functoolsÚ_weakrefÚrandomÚoperatorÚabcÚtypingÚdataclassesÚattrÚattrsúos.pathc                    r$   )Nc                    s`   |D ]'}|  ¡ dkr)| ¡   ¡ dkr)tˆ  ¡ d�}t‡ fdd„| ¡ D ƒƒg  S qˆˆ ||ƒS )NÚEnumMetaÚenum)r1   c                    s   i | ]
}|j tˆ |ƒj“qS r'   )r/   ÚEnumInstancer.   )rŽ   r.   ©rœ   r'   r*   Ú
<dictcomp>@  s    ÿÿz:get_metaclass_filters.<locals>.wrapper.<locals>.<dictcomp>)r4   r¥   r    rü   r!   rÓ   )rœ   Zmetaclassesr5   Ú	metaclassr6  rW   rz  r*   r=   ;  s   þ€z&get_metaclass_filters.<locals>.wrapperr'   rU   r'   rW   r*   Úget_metaclass_filters:  s   
r}  c                   @   s2   e Zd Zdd„ Zedd„ ƒZdd„ Zd
dd	„ZdS )ry  c                 C   s"   |j | _ || _|| _| jj| _d S r?   )rD   Ú_clsÚ_namer,  Z	tree_node)rm   rœ   r.   r'   r'   r*   ro   I  s   zEnumInstance.__init__c                 C   s   t | | jjƒS r?   )r   r  r,  rq   r'   r'   r*   r.   O  s   zEnumInstance.namec                 C   sf   | j j}| d¡r| d¡s| j jdkr+| j  ¡ }|r!tt|ƒƒS | jj	 
d¡\}|S | j ¡ \}|S )NÚ__rÀ   Úobject)r  r/   Ú
startswithÚendswithrß   rC   rt   ru   rD   Zbuiltins_moduler\   r~  r]   )rm   r  Úinferredr§   r)   r'   r'   r*   rv   S  s    
zEnumInstance._get_wrapped_valueNc                 c   sB   � t tt | j| jj¡j| jd�ƒV  |  ¡  	¡ D ]}|V  qd S )N)r.   r)   )
r!   Údictr   rK  rD   r  r/   r.   rv   rw   )rm   rx   rX   r'   r'   r*   rw   _  s   €
þÿzEnumInstance.get_filtersr?   )rz   r{   r|   ro   r   r.   rv   rw   r'   r'   r'   r*   ry  H  s    
ry  c                    r$   )Nc                    s@   |j dkr| ¡ r| ¡ dkrtt | tjj¡hƒS ˆ | ||ƒS )NrP  rv  )	r)   r3   r4   r   r   rK  rN  rO  rP  )rD   rJ   r,  rW   r'   r*   r=   i  s
   ÿz$tree_name_to_values.<locals>.wrapperr'   rU   r'   rW   r*   Útree_name_to_valuesh  s   r†  )FFFFFr?   )fr}   rú   rN  Úinspectr   Zjedir   Zjedi.inference.utilsr   Zjedi.inference.helpersr   Zjedi.inference.argumentsr   r   r   r	   r
   Zjedi.inferencer   r   Zjedi.inference.value.instancer   r   Zjedi.inference.base_valuer   r   r   r   r   Zjedi.inference.valuer   r   Zjedi.inference.value.klassr   Zjedi.inference.value.functionr   r   Zjedi.inference.lazy_valuer   r   r   Zjedi.inference.namesr   r   Zjedi.inference.filtersr   r   r    r!   Zjedi.inference.signaturer"   r#   rô   ré   r>   rH   rY   r`   rb   rg   rj   rk   r€   r�   r›   r¬   r®   r»   r½   rÁ   rÏ   rØ   rÙ   rá   r  r  r  r  r  r  r!  r"  r$  r&  r%  r4  r3  r<  rD  rB  rE  rJ  rM  rQ  rO  rh  ri  rj  r6   r}  ry  r†  r'   r'   r'   r*   Ú<module>   s   ;#	
þ
#






)



:8

		
	


öþþÿýÿÿÿý	ùþþþ


ü½L 