o
    i                     @   s   d dl Z d dlZd dlZd dlmZmZmZ d dlZdddZej	dkr6ej
Zd dlmZ G dd	 d	eZn%d d
lmZ G dd	 d	ed	dZd dlmZmZmZmZmZmZ dd Zdd Z
G dd de jZG dd deZdd ZdS )    N)castAnyIterator c                 C   s   | st t|dS )z
    Like an assert statement, but unaffected by -O
    :param condition: value that is expected to be truthy
    :type message: Any
    N)AssertionErrorstr)	conditionmessage r
   V/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/executing/_utils.pyassert_
   s   r   )      )Instructionc                   @      e Zd ZdZdS r   N__name__
__module____qualname__linenor
   r
   r
   r   r          r   )
namedtuplec                   @   r   r   r   r
   r
   r
   r   r      r   z offset argval opname starts_line)HAVE_ARGUMENTEXTENDED_ARGhasconstopnamefindlinestartshasnamec                 c   s    | j }tt| }t|}d}d}||k r~|}|| }t|}||}	d }
|d }|tkrnt|| t||d  d  | }d}|d }|tkrO|d }|tv rY| j	| }
n|t
v rc| j| }
nt| dkrn| j| }
t||
t| |	V  ||k sd S d S )Nr            i   	LOAD_FAST)co_codedictr   lenordgetr   r   r   	co_constsr   co_namesr   co_varnamesr   )cocode
linestartsniextended_argoffsetcopr   argvalopargr
   r
   r   _get_instructions'   s6   
$
r6   c                 c   sB    | j }t| D ]}tt|}|jp|}t| ||_|V  qd S )N)co_firstlinenor6   r   EnhancedInstructionstarts_liner   r   )r+   r   instr
   r
   r   get_instructionsD   s   

r;   c                   @   r   )EnhancedASTN)r   r   r   parentr
   r
   r
   r   r<   Q   r   r<   c                   @   r   )r8   N)r   r   r   _copiedr
   r
   r
   r   r8   V   r   r8   c                 C   sH  t jt jt jf}t| t jr| j}nGt| t jr| j}n=t| t j	r.| j
p,| jdd }n+t| |r7| j}n"t| t jrF| jsBJ | j}ntjdkrUt| t jrU| j}ntd|dr|ds| j| }}t|t jrt||jvst|ds|	 |S |j|}}t|t jrt||jvrt|jd}|dkr||jvrd| | S |S )	z

    Parameters:
        node: the node which should be mangled
        name: the name of the node

    Returns:
        The mangled name of `node`
    .r   )r      zno node to mangle__r=   _r   )astFunctionDefClassDefAsyncFunctionDef
isinstance	AttributeattrNameidaliasasnamenamesplitExceptHandlersysversion_infoTypeVar	TypeError
startswithendswithr=   baseshasattrlstripdecorator_list)nodefunction_class_typesrN   r=   child
class_namer
   r
   r   mangled_name]   s6   



r_   )r   )rC   rQ   distypingr   r   r   typesr   rR   r;   r6   r   _Instructioncollectionsr   r   r   r   r   r   r   ASTr<   r8   r_   r
   r
   r
   r   <module>   s$   

 