Your IP : 216.73.216.196
B
��\VJ �
@ s8 d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ e� d�Z
e� d�ZejZ
e� d�Ze�� Zejd kr�d
Z
dZndZ
d
Ze
d dhZddddddddddh
Zdd� ZG dd� d�Zd.dd�Zd d!� ZG d"d#� d#e�ZG d$d%� d%e�ZG d&d'� d'e�ZG d(d)� d)e�ZG d*d+� d+e�ZG d,d-� d-e�ZdS )/zXThis module contains base classes and functions for the nodes and some
inference utils.
� N)�context)�
exceptions)�utilzinterpreter.objectmodel�helpers�manager)� r �builtins�__bool__�__builtin__�__nonzero__z .propertyzabc.abstractpropertyZcached_propertyZcachedpropertyZlazypropertyZ
lazy_propertyZreifyZ
lazyattributeZlazy_attributeZLazyPropertyZlazyZcache_readonlyc s� t �| �� �rdS dd� | �� D �� t� fdd�tD ��r>dS | jsHdS x�| jjpTdD ]t}t�|�}|d ksV|t j
krxqV|jjdkrVxD|j
D ]:}|jjd kr�q�|�|j�\}}|jtkr�|jd
kr�dS q�W qVW dS )NTc S s$ h | ]}|t jk r|�d �d �qS )�.���)r �Uninferable�split)�.0�name� r �>/opt/alt/python37/lib/python3.7/site-packages/astroid/bases.py� <setcomp>D s z_is_property.<locals>.<setcomp>c 3 s | ]}|� kV qd S )Nr )r r )�strippedr r � <genexpr>I s z_is_property.<locals>.<genexpr>Fr �ClassDef�Name�property)�
PROPERTIES�intersectionZdecoratornames�any�POSSIBLE_PROPERTIES�
decoratorsZnodesr Z
safe_inferr r � __class__�__name__�bases�lookupr �BUILTINS)�methZ decorator�inferredZ
base_class�module�_r )r r �_is_propertyA s(
r( c @ s0 e Zd ZdZdZd dd�Zdd� Zd
dd�ZdS )�Proxyz�a simple proxy object
Note:
Subclasses of this object will need a custom __getattr__
if new instance attributes are created. See the Const class
Nc C s |d k r|| _ d S )N)�_proxied)�selfZproxiedr r r �__init__i s zProxy.__init__c C s4 |dkrt | jd�S || jkr(| j| S t | j|�S )Nr* )�getattrr �__dict__r* )r+ r r r r �__getattr__m s
zProxy.__getattr__c c s
| V d S )Nr )r+ r r r r �infert s zProxy.infer)N)N)r �
__module__�__qualname__�__doc__r* r, r/ r0 r r r r r) ^ s
r) c c s� d}|dk r|j }|�� }nd}t�� }x�| D ]�}|tjkrH|V d}q.|�||�|_ y$x|j|d�D ]}|V d}qfW W q. tj k
r� w.Y q. tj
k
r� tjV d}Y q.X q.W |s�tj
d| ||d��dS )zGReturn an iterator on statements inferred by each statement in *stmts*.FNT)r z.Inference failed for all members of {stmts!r}.)�stmts�framer )Z
lookupname�clone�
contextmod�InferenceContextr r Z_infer_namer0 r ZNameInferenceError�InferenceError)r4 r r5 r% r Zstmtr r r �_infer_stmtsx s6
r: c C s� t | j||d�d �}|r�t|d�r�|�� s0tjS y@x:|j| |d�D ](}|tjkrT|S t |j|d��}|�� S W W n t j
k
r� Y nX tjS )N)r �infer_call_result)�next�igetattr�hasattr�callabler r r; r0 �
bool_valuer r9 )�instance�method_namer r$ �valuer% r r r �_infer_method_result_truth� s
rD c @ sD e Zd ZdZdZdd� Zddd�Zddd �Zdd
d�Zddd
�Z dS )�BaseInstancezNAn instance base class, which provides lookup methods for potential instances.Nc C s dS )NzInstance ofr )r+ r r r �display_type� s zBaseInstance.display_typeTc
C s� y| j �||�}W nj tjk
r| } zJ| jrD|| jkrD| j�|�gS |rZ| j j||dd�S tj| ||d�|�W d d }~X Y nX |r�y|| j j||dd� S tjk
r� Y nX |S )NF)�
class_context)�target� attributer )r* Z
instance_attrr �AttributeInferenceError�special_attributesr"