
    dh                     ,    d Z ddlmZmZ d Zd Zd ZdS )z
Python introspection helpers.
    )CodeTypeFunctionTypec                 f    t          t          d          r)  j        d
i d                                 D             S g d}t          t          d          r|                    dd           t          t          d          r|                    dd            fd	|D             }t          | S )Nreplacec                      i | ]\  }}d |z   |S co_ ).0kvs      f/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/automat/_introspection.py
<dictcomp>zcopycode.<locals>.<dictcomp>
   s"    "L"L"LDAq519a"L"L"L    )argcountnlocals	stacksizeflagscodeconstsnamesvarnamesfilenamenamefirstlinenolnotabfreevarscellvarsco_kwonlyargcount   kwonlyargcountco_posonlyargcountposonlyargcountc           
      ^    g | ])}                     |t          d |z                       *S r   getgetattr)r   r   changestemplates     r   
<listcomp>zcopycode.<locals>.<listcomp>    s5    SSSTgkk$%$, ? ?@@SSSr   r
   )hasattrr   r   itemsinsert)r)   r(   r   valuess   ``  r   copycoder/      s    tY NxMM"L"LGMMOO"L"L"LMMM  E  t()) *Q()))t)** +Q)***SSSSSUSSSF=r   c                 l     g d} fd|D             }t          t           j        |          g|R  S )N)globalsr   defaultsclosurec           
      d    g | ],}                     |t          d |z   d z                       -S )__r%   )r   r   funcchangesr)   s     r   r*   z copyfunction.<locals>.<listcomp>+   sG       IMghtd0BCCDD  r   )functionr/   __code__)r)   r6   codechangesr   r.   s   ``   r   copyfunctionr:   $   sg      E    QV  F HX.<<FvFFFFr   c                       fd}|S )zL
    Preserve the name of the given function on the decorated function.
    c                 r    t          | t          j                  t          j                            S )N)r   )r:   dict__name__)	decoratedfs    r   	decoratorzpreserveName.<locals>.decorator6   s/    It'<'<'<d
>S>S>STTTr   r
   )r@   rA   s   ` r   preserveNamerB   1   s)    
U U U U U r   N)	__doc__typesr   r   r   r7   r/   r:   rB   r
   r   r   <module>rE      sc     = < < < < < < <  8
G 
G 
G    r   