o
    NZh                     @   s   d dl Z d dlZd dlZdejd< dd Zdd Zdd	d
ZdddZde_e	d d a
e ddd Zdd Zdd Zdd Zdd ZedkrTe  e  e  dS dS )    NTrecursec                 C      | S N )ar   r   P/var/www/html/lang_env/lib/python3.10/site-packages/dill/tests/test_functions.py
function_a      r   c                 C      | | S r   r   )bb1r   r   r   
function_b      r      c                 C   r
   r   r   )cc1r   r   r   
function_c   r   r   c                 C   s   | | | S )z
doc stringr   )dZd1d2r   r   r   
function_d   s   r   za modulezE
def function_e(e, *e1, e2=1, e3=2):
    return e + sum(e1) + e2 + e3c                 C   s   t | 7 a t S r   )	globalvar)xr   r   r   function_with_cache'   s   r   c                      s   	  fddS )NFc                      s    S r   r   r   valuer   r   <lambda>1   s    z3function_with_unassigned_variable.<locals>.<lambda>r   r   r   r   r   !function_with_unassigned_variable.   s   r   c                  C   sB   G dd d} dd l }dd l}|  }||}| |u sJ d S )Nc                   @   s   e Zd Zdd ZdS )ztest_issue_510.<locals>.Fooc                 S   s   dd }| | | _d S )Nc                 S   r   r   r   )selfr   r   r   f29   r	   z0test_issue_510.<locals>.Foo.__init__.<locals>.f2)__get__r   )r   r   r   r   r   __init__8   s   z$test_issue_510.<locals>.Foo.__init__N)__name__
__module____qualname__r    r   r   r   r   Foo7   s    r$   r   )dillpickletoolscopyr   )r$   r%   r&   ff1r   r   r   test_issue_5104   s
   
r*   c                  C   s  t t} t | ddksJ t t}t |dddks!J t t}t |ddks1J t |dddks=J t t}t |jtjksMJ t |jtjksXJ t |dddksdJ t |ddddksqJ t |dddddksJ t	d d}t t	}t	ddksJ t	ddksJ t	ddksJ t	ddksJ t
 }t t |}dt|jd v sJ z|  W td	 ty   Y nw td
 d S )Nr   r               )r   emptyz&cell_copy() did not read an empty cella_  
dumped_func_e = dill.dumps(function_e)
assert dill.loads(dumped_func_e)(1, 2) == 6
assert dill.loads(dumped_func_e)(1, 2, 3) == 9
assert dill.loads(dumped_func_e)(1, 2, e2=3) == 8
assert dill.loads(dumped_func_e)(1, 2, e2=3, e3=4) == 10
assert dill.loads(dumped_func_e)(1, 2, 3, e2=4) == 12
assert dill.loads(dumped_func_e)(1, 2, 3, e2=4, e3=5) == 15)r%   dumpsr   loadsr   r   r   __doc__r"   r   r   str__closure__	ExceptionAssertionErrorexec)Zdumped_func_aZdumped_func_bZdumped_func_cZdumped_func_dr   Zdumped_func_cacheZ
empty_cellZ	cell_copyr   r   r   test_functionsC   s<   




r8   c                     s6  dd l } ddlm}m}m}m} tj | jdt	d t
 dd}| jr'| jd=  fdd|D d	d d
| dd dd  dd dd  dd  |D ]:\}}}tfdd| D }	z||	  |dkr|d
 g|	R   W q^ ty }
 ztd||
d }
~
ww d S )Nr   )ALL_CODE_PARAMSCODE_PARAMSCODE_VERSION_create_codeignore)category	co_lnotab    c                    s   i | ]
}|t  d | qS )Zco_)getattr).0r(   )coder   r   
<dictcomp>x   s    z$test_code_object.<locals>.<dictcomp>ZposonlyargcountZlnotabZ	linetablequalnamenameZexceptiontableZendlinetableZcolumntablec                 3   s    | ]} | V  qd S r   r   )rB   p)fieldsr   r   	<genexpr>   s    z#test_code_object.<locals>.<genexpr>)r,   
   z6failed to construct code object with format version {})warningsZ
dill._dillr9   r:   r;   r<   r   __code__filterwarningsDeprecationWarningrA   filters
setdefaulttuplesplitr5   format)rK   r9   r:   r;   r<   ZLNOTABversion_paramsargserrorr   )rC   rH   r   test_code_objectq   s4   rY   __main__)r   )	functoolsr%   syssettingsr   r   r   r   r"   r7   r   	lru_cacher   r   r*   r8   rY   r!   r   r   r   r   <module>   s,   



.
