
    yIfI                        d Z ddlmZ ddlm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          ZddZdS )z:Check for use of dictionary mutation after initialization.    )annotations)TYPE_CHECKING)nodes)BaseChecker)only_required_for_messages)HIGH)PyLinterc                  D    e Zd ZdZddiZ ed          d
d            Zd	S )DictInitMutateCheckerdict-init-mutateC3401)z>Declare all known key/values when initializing the dictionary.r   zXDictionaries can be initialized with a single statement using dictionary literal syntax.nodenodes.AssignreturnNonec                T   t          |j        t          j                  sdS |j        d         }t          |j                  dk    st          |t          j                  sdS |                                }|r2t          |t          j                  rt          |j                  dk    rdS |j        d         }t          |t          j	                  sdS |j        }t          |t          j
                  sdS |j        |j        k    r|                     d|t                     dS dS )z
        Detect dictionary mutation immediately after initialization.

        At this time, detecting nested mutation is not supported.
        Nr      r   )r   
confidence)
isinstancevaluer   Dicttargetslen
AssignNamenext_siblingAssign	SubscriptNamenameadd_messager   )selfr   	dict_namefirst_siblingsibling_targetsibling_names         V/var/www/piapp/venv/lib/python3.11/site-packages/pylint/extensions/dict_init_mutate.pyvisit_assignz"DictInitMutateChecker.visit_assign   s!    $*ej11 	FLO	t|!!Iu?O)P)P!F))++	mU\::	 =())Q..F&.q1.%/:: 	F%+,
33 	F	../dtLLLLL /.    N)r   r   r   r   )__name__
__module____qualname__r   msgsr   r'    r(   r&   r   r      s[        D 
D   233M M M 43M M Mr(   r   linterr	   r   r   c                J    |                      t          |                      d S )N)register_checkerr   )r.   s    r&   registerr1   A   s%    
1&99:::::r(   N)r.   r	   r   r   )__doc__
__future__r   typingr   astroidr   pylint.checkersr   pylint.checkers.utilsr   pylint.interfacesr   pylint.lint.pylinterr	   r   r1   r-   r(   r&   <module>r:      s   
 A @ " " " " " "                   ' ' ' ' ' ' < < < < < < " " " " " " .------*M *M *M *M *MK *M *M *MZ; ; ; ; ; ;r(   