
    cB                        d Z ddlmZ ddlZddlm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 erdd	lmZ  G d
 de	j                  ZddZdS )z=Checker for anything related to the async protocol (PEP 492).    )annotationsN)TYPE_CHECKING)nodes)checkers)utils)decorated_with)PyLinterc                      e Zd ZdZdddddifddd	ddifd
ZddZ ej        d          dd            Z ej        d          dd            Z	dS )AsyncCheckerasynczYield inside async functionyield-inside-async-functionzQUsed when an `yield` or `yield from` statement is found inside an async function.
minversion      zFAsync context manager '%s' doesn't implement __aenter__ and __aexit__.not-async-context-managerzxUsed when an async context manager is used with an object that does not implement the async context management protocol.)E1700E1701returnNonec                B    | j         j        j        | _        dg| _        d S )Nzcontextlib.asynccontextmanager)linterconfigmixin_class_rgx_mixin_class_rgx_async_generators)selfs    5lib/python3.11/site-packages/pylint/checkers/async.pyopenzAsyncChecker.open*   s#     $ 2 B"B!C    nodenodes.AsyncFunctionDefc                   |                     t          j                  D ]a}|                                |u rIt          j        d d         dk    st          |t          j                  r|                     d|           bd S )N   r   r   )r!   )	nodes_of_classr   Yieldscopesysversion_info
isinstance	YieldFromadd_message)r   r!   childs      r   visit_asyncfunctiondefz#AsyncChecker.visit_asyncfunctiondef.   s    ((55 	L 	LE{{}}$ L !$.L2<UEO2T2TL   !>U KKK		L 	Lr    nodes.AsyncWithc                   |j         D ]a\  }}t          j        |          }||t          j        u r+t          |t          j                  rt          || j	                  r[nt          |t          j
        j                  rt          |j        | j	                  rn	 |                    d           |                    d           # t          j        j        $ ri t          |t          j                  rLt          j        |          sY d| j        j        j        v r"| j                            |j                  rY =Y nw xY w|                     d||j        f           cd S )N
__aenter__	__aexit__r   )r!   args)itemschecker_utils
safe_inferastroidUninferabler*   r   AsyncFunctionDefr   r   basesAsyncGeneratorparentgetattr
exceptionsNotFoundErrorInstancehas_known_basesr   r   ignored_checks_for_mixinsr   matchnamer,   )r   r!   ctx_mgr_inferreds        r   visit_asyncwithzAsyncChecker.visit_asyncwith6   s   * $	 $	JGQ$/88H 8w/B#B (E$:;;  "(D,BCC Hgm&BCC  "(/43IJJ $$\222$$[111  )7 % % %!(G,<== %  -<XFF %$H 8#{1KL% !% 5 ; ;HM J J%
 %H% +$hm=M     E$	 $	s    *CAE2EEN)r   r   )r!   r"   r   r   )r!   r/   r   r   )
__name__
__module____qualname__rD   msgsr   r5   only_required_for_messagesr.   rH    r    r   r   r      s        D *).6"
 U'M6"
 D"D D D D .]-.KLLL L L MLL .]-.IJJ% % % KJ% % %r    r   r   r	   r   r   c                J    |                      t          |                      d S )N)register_checkerr   )r   s    r   registerrQ   _   s$    
L0011111r    )r   r	   r   r   )__doc__
__future__r   r(   typingr   r7   r   pylintr   pylint.checkersr   r5   pylint.checkers.utilsr   pylint.lintr	   BaseCheckerr   rQ   rN   r    r   <module>rZ      s   
 D C " " " " " " 



                          2 2 2 2 2 2 0 0 0 0 0 0 %$$$$$$E E E E E8' E E EP2 2 2 2 2 2r    