o
    DDi                     @   sv   d Z ddlmZ ddlmZ ddlmZ dededefdd	Z	dee dee defd
dZ
dddddefddZdS )z7
Provides the implementation of `CSTNode.deep_equals`.
    )fields)Sequence)CSTNodeabreturnc                 C   s`   t | trt |trt| |S t | tr,t | ttfs,t |tr,t |ttfs,t| |S | |kS N)
isinstancer   _deep_equals_cst_noder   strbytes_deep_equals_sequencer   r    r   R/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/deep_equals.pydeep_equals   s   

r   c                 C   s8   | |u rdS t | t |krdS tdd t| |D S )a  
    A helper function for `CSTNode.deep_equals`.

    Normalizes and compares sequences. Because we only ever expose `Sequence[]`
    types, and not `List[]`, `Tuple[]`, or `Iterable[]` values, all sequences should
    be treated as equal if they have the same values.
    TFc                 s   s    | ]
\}}t ||V  qd S r   )r   ).0a_elb_elr   r   r   	<genexpr>*       z(_deep_equals_sequence.<locals>.<genexpr>)lenallzipr   r   r   r   r      s
   r   r   c                 C   sd   t | t |ur
dS | |u rdS dd t| D D ]}t| |j}t||j}t||s/ dS qdS )NFTc                 s   s    | ]
}|j d u r|V  qdS )TN)compare)r   fr   r   r   r   3   r   z(_deep_equals_cst_node.<locals>.<genexpr>)typer   getattrnamer   )r   r   fielda_valueb_valuer   r   r   r
   -   s   
r
   N)__doc__dataclassesr   typingr   libcst._nodes.baser   objectboolr   r   r
   r   r   r   r   <module>   s   