Your IP : 216.73.217.32
B
A!p\�
� @ s� d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm
Z
ddlmZ ddlmZ G d d
� d
ej
�Zdd� ZdS )
z=Checker for anything related to the async protocol (PEP 492).� N)�bases)�
exceptions)�checkers)�utils)�
interfaces)�decorated_withc @ sd e Zd ZejZdZdddddifddd ddifd
�Zdd� Ze �
d�d
d� �Ze �
d�dd� �ZdS )�AsyncChecker�asynczYield inside async functionzyield-inside-async-functionzQUsed when an `yield` or `yield from` statement is found inside an async function.Z
minversion)� � zFAsync context manager '%s' doesn't implement __aenter__ and __aexit__.znot-async-context-managerzxUsed when an async context manager is used with an object that does not implement the async context management protocol.)ZE1700ZE1701c C s t �| d�| _dg| _d S )Nzignore-mixin-memberszcontextlib.asynccontextmanager)r Zget_global_option�_ignore_mixin_members�_async_generators)�self� r �F/opt/alt/python37/lib/python3.7/site-packages/pylint/checkers/async.py�open* s
zAsyncChecker.openc C sR xL|� tj�D ]<}|�� |krtjd d� dks<t|tj�r| jd|d� qW d S )N� )r
r zyield-inside-async-function)�node) Znodes_of_class�astroidZYieldZscope�sys�version_info�
isinstanceZ YieldFrom�add_message)r r �childr r r �visit_asyncfunctiondef0 s z#AsyncChecker.visit_asyncfunctiondefc C s� x�|j D ]�\}}t�|�}|d ks|tjkr.qt|tj�rLt|j | j
�r�qnhy|�d� |�d� W q tj
k
r� t|tj�r�t�|�s�w| jr�|jdd � �� dkr�wY nX q| jd||jfd� qW d S )N�
__aenter__� __aexit__���Zmixinznot-async-context-manager)r �args)�items�
checker_utilsZ
safe_inferr ZUninferabler r �AsyncGeneratorr �parentr
�getattrr Z
NotFoundErrorZInstanceZhas_known_basesr �name�lowerr )r r Zctx_mgr�_�inferredr r r �visit_asyncwith8 s(
zAsyncChecker.visit_asyncwithN)
�__name__�
__module__�__qualname__r ZIAstroidCheckerZ__implements__r$ Zmsgsr r Zcheck_messagesr r( r r r r r s r c C s | � t| �� dS )z-required method to auto register this checkerN)Zregister_checkerr )Zlinterr r r �registerZ s r, )�__doc__r r r r �pylintr Zpylint.checkersr r r Zpylint.checkers.utilsr ZBaseCheckerr r, r r r r �<module> s D