o
    i                     @   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   V/home/ubuntu/veenaModal/venv/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   )d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)dumped_func_adumped_func_bdumped_func_cdumped_func_dr   dumped_func_cache
empty_cell	cell_copyr   r   r   test_functionsC   s<   




r@   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 )co_)getattr).0r)   )coder   r   
<dictcomp>x   s    z$test_code_object.<locals>.<dictcomp>posonlyargcountlnotab	linetablequalnamenameexceptiontableendlinetablecolumntablec                 3   s    | ]} | V  qd S r   r   )rK   p)fieldsr   r   	<genexpr>   s    z#test_code_object.<locals>.<genexpr>)r-   
   z6failed to construct code object with format version {})warnings
dill._dillrA   rB   rC   rD   r   __code__filterwarningsDeprecationWarningrJ   filters
setdefaulttuplesplitr6   format)rZ   rA   rB   rC   rD   LNOTABversion_paramsargserrorr   )rL   rW   r   test_code_objectq   s4   rj   __main__)r   )	functoolsr&   syssettingsr   r   r   r   r#   r8   r   	lru_cacher   r   r+   r@   rj   r"   r   r   r   r   <module>   s,   



.
