
    c                    x    d 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 )zELooks for try/except statements with too much code in the try clause.    )annotations)TYPE_CHECKING)nodes)checkers)PyLinterc                  F    e Zd ZdZdZddiZddddd	d
ffZddZddZeZ	dS )BroadTryClauseCheckerzChecks for try clauses with too many lines.

    According to PEP 8, ``try`` clauses shall contain the absolute minimum
    amount of code. This checker enforces a maximum number of statements within
    ``try`` clauses.
    broad_try_clauseW0717)z%stoo-many-try-statementsz(Try clause contains too many statements.zmax-try-statements   intz<int>z4Maximum number of statements allowed in a try clause)defaulttypemetavarhelptry_node"nodes.TryExcept | nodes.TryFinallyreturnc                    t          |j                  }|j        D ]V}t          |t          j        t          j        t          j        t          j        f          r||                     |          z  }W|S N)	lenbody
isinstancer   ForIfWhileWith_count_statements)selfr   statement_count	body_nodes       Blib/python3.11/site-packages/pylint/extensions/broad_try_clause.pyr   z'BroadTryClauseChecker._count_statements1   sg    hm,,! 	E 	EI)ei5;
%STT E4#9#9)#D#DD    nodeNonec                    |                      |          }|| j        j        j        k    r7d| d| j        j        j         }|                     d|j        ||           d S d S )Nztry clause contains z statements, expected at most r   )r%   args)r   linterconfigmax_try_statementsadd_messagelineno)r    r%   try_clause_statementsmsgs       r#   visit_tryexceptz%BroadTryClauseChecker.visit_tryexcept:   s     $ 6 6t < < 4;#5#HH 	A'< A A+>A A  )4;T      	 	r$   N)r   r   r   r   )r%   r   r   r&   )
__name__
__module____qualname____doc__namemsgsoptionsr   r0   visit_tryfinally r$   r#   r	   r	      s          D 
D !"N	 	

G   	 	 	 	 'r$   r	   r)   r   r   r&   c                J    |                      t          |                      d S r   )register_checkerr	   )r)   s    r#   registerr<   H   s%    
1&99:::::r$   N)r)   r   r   r&   )r4   
__future__r   typingr   astroidr   pylintr   pylint.lintr   BaseCheckerr	   r<   r9   r$   r#   <module>rC      s   
 L K " " " " " "                         %$$$$$$2' 2' 2' 2' 2'H0 2' 2' 2'j; ; ; ; ; ;r$   