o
    DDi                     @   sX   d dl mZmZ d dlZdeeejf dee fddZdeeejf defddZdS )	    )OptionalUnionNnodereturnc                 C   s   t | tjr	| jS t | tr| S t | tjr"t| j d| jj S t | tjr-t| j	S t | tj
r8t| jS t | tjtjfrFt| jS t | tjrQt| jS dS )a   Return a dot concatenated full name for str, :class:`~libcst.Name`, :class:`~libcst.Attribute`.
    :class:`~libcst.Call`, :class:`~libcst.Subscript`, :class:`~libcst.FunctionDef`, :class:`~libcst.ClassDef`,
    :class:`~libcst.Decorator`.
    Return ``None`` for not supported Node.
    .N)
isinstancecstNamevaluestr	Attributeget_full_name_for_nodeattrCallfunc	SubscriptFunctionDefClassDefname	Decorator	decorator)r    r   R/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/helpers/expression.pyr      s   




r   c                 C   s"   t | }|du rtd|  |S )a   Return a dot concatenated full name for str, :class:`~libcst.Name`, :class:`~libcst.Attribute`.
    :class:`~libcst.Call`, :class:`~libcst.Subscript`, :class:`~libcst.FunctionDef`, :class:`~libcst.ClassDef`.
    Raise Exception for not supported Node.
    Nz!Not able to parse full name for: )r   	Exception)r   	full_namer   r   r   get_full_name_for_node_or_raise"   s   r   )	typingr   r   libcstr   r   CSTNoder   r   r   r   r   r   <module>   s     