o
    gB
                     @   s>   d Z ddlmZ ddlmZmZ G dd dejZdd ZdS )	zELooks for try/except statements with too much code in the try clause.    )nodes)checkers
interfacesc                   @   sj   e Zd ZdZejZdZddiZdZ	dddd	d
dffZ
dd ZdejddfddZdejddf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helpc                 C   sB   t |j}|jD ]}t|tjtjtjtjfr|| |7 }q|S N)	lenbody
isinstancer   ForIfWhileWith_count_statements)selftry_nodestatement_count	body_node r   `/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/extensions/broad_try_clause.pyr   5   s   

z'BroadTryClauseChecker._count_statementsnodereturnNc                 C   sF   |  |}|| jjkr!d| d| jj }| jd|j||d d S d S )Nztry clause contains z statements, expected at most r   )r   args)r   configmax_try_statementsadd_messagelineno)r   r   try_clause_statementsmsgr   r   r   visit_tryexcept>   s   


z%BroadTryClauseChecker.visit_tryexceptc                 C   s   |  | d S r   )r(   )r   r   r   r   r   visit_tryfinallyF   s   z&BroadTryClauseChecker.visit_tryfinally)__name__
__module____qualname____doc__r   IAstroidChecker__implements__namemsgspriorityoptionsr   r   	TryExceptr(   
TryFinallyr)   r   r   r   r   r      s$    	r   c                 C   s   |  t|  dS )z.Required method to auto register this checker.N)register_checkerr   )linterr   r   r   registerJ   s   r8   N)	r-   astroidr   pylintr   r   BaseCheckerr   r8   r   r   r   r   <module>   s
   7