
    yIf                    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                  B    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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node;nodes.For | nodes.If | nodes.Try | nodes.While | nodes.With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       V/var/www/piapp/venv/lib/python3.11/site-packages/pylint/extensions/broad_try_clause.pyr   z'BroadTryClauseChecker._count_statements1   sg     di.. 	E 	EI)ei5;
%STT E4#9#9)#D#DD    	nodes.Try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_tryzBroadTryClauseChecker.visit_try<   s     $ 6 6t < < 4;#5#HHHA'< A A+>A A  )4;T       IHr$   N)r   r   r   r   )r   r%   r   r&   )	__name__
__module____qualname____doc__namemsgsoptionsr   r0    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;   r8   r$   r#   <module>rB      s   
 L K " " " " " "                         %$$$$$$2 2 2 2 2H0 2 2 2j; ; ; ; ; ;r$   