
    yIf]                        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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util)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    I/var/www/piapp/venv/lib/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{{}}$$ !$..*UEO2T2T.  !>U KKK		L 	Lr!   nodes.AsyncWithc                   |j         D ]m\  }}t          j        |          }|t          |t          j                  r7t          |t          j                  rt          || j	                  rgnt          |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 IY nw xY w|                     d||j        f           od S )N
__aenter__	__aexit__r   )r"   args)itemschecker_utils
safe_inferr+   r   UninferableBaser   AsyncFunctionDefr	   r   astroid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:h8L#M#M(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 L $ 5 ; ;HM J JL %H% +$hm=M     E$	 $	s   ,*CAE2EEN)r   r   )r"   r#   r   r   )r"   r0   r   r   )
__name__
__module____qualname__rE   msgsr    r6   only_required_for_messagesr/   rI    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   registerrR   _   s$    
L0011111r!   )r   r
   r   r   )__doc__
__future__r   r)   typingr   r:   r   r   pylintr   pylint.checkersr   r6   pylint.checkers.utilsr	   pylint.lintr
   BaseCheckerr   rR   rO   r!   r   <module>r[      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!   