o
    _{i                     @   s  d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlZd dlZd dlZdd Zdd	 Zd
\ZZZdd Zdd ZG dd dZdd Zd gZG dd deZe Zdd Zdd Zdd Z e!dkre  e  e  e  e  e   dS dS )    )baditems
badobjectsbadtypeserrorsparentat
globalvars)settings)IS_PYPY)PicklingErrorNc                  C   s*  t  } t| | gksJ t| | u sJ t| t| ksJ tt| tu s)J t| d}t|t	s5J t
t| d t
| ksFJ t
t| d t
| ksWJ tdd t
t| d D }t	|}tjds{t|t|u s{J d}d| v rt||u sJ |d sJ d S d S )N   c                 S   s   g | ]}|j j|jd  fqS )r   )	__class____name__args).0err r   J/home/ubuntu/.local/lib/python3.10/site-packages/dill/tests/test_detect.py
<listcomp>   s    z#test_bad_things.<locals>.<listcomp>COVERAGE   r   )inspectcurrentframer   r   r   typer   	TypeError
isinstancedictlistkeyssetvaluesosenvirongetlen)fdsanr   r   r   test_bad_things   s   
"" 0r*   c                  C   sl   g d} t | }t|t}|| u sJ trt|td u sJ nt|t| d u s*J ttttu s4J d S )N)            )iterr   r   r
   intr   id)xlistiterobjr   r   r   test_parent$   s   
r6   )r   r      c                 C   s   t | d  S )Nr   r(   r3   r   r   r   squared0      r:   c                    s    fdd}|S )Nc                    s   t  |  S N)r:   )yr9   r   r   bar4   r;   zfoo.<locals>.barr   )r3   r>   r   r9   r   foo3   s   r?   c                   @   s   e Zd Zdd Zdd ZdS )_classc                 C      d S r<   r   selfr   r   r   _method9      z_class._methodc                 C   s   dS )NTr   rB   r   r   r   ok;   rE   z	_class.okN)r   
__module____qualname__rD   rF   r   r   r   r   r@   8   s    r@   c                  C   s   dd } t | tddddksJ t tdd}t|td	d
gks#J t tdd}|i ks/J td}t |dd}t|td	d
gksEJ t |dd}t|td	gksVJ ~t t}t|td
gksfJ d S )Nc                  S      t  dd } d S )Nc                  S   rI   )Nc                   S   s   t  d S r<   )cr   r   r   r   hC   s   z-test_globals.<locals>.f.<locals>.g.<locals>.h)b)rK   r   r   r   gA      z"test_globals.<locals>.f.<locals>.gr8   )rM   r   r   r   r%   ?   rN   ztest_globals.<locals>.fr   r   r7   )r(   rL   rJ   Trecurser:   r(   F)r   r   r?   r   r:   )r%   reszapr   r   r   test_globals>   s   rS   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Fooc                 C   rA   r<   r   rB   r   r   r   __init__b   rE   zFoo.__init__c                 C   s   t d d t d< i S )Nr   r   )r>   rB   r   r   r   __getstate__d   s   zFoo.__getstate__c                 C   rA   r<   r   )rC   datar   r   r   __setstate__g   rE   zFoo.__setstate__N)r   rG   rH   rU   rV   rX   r   r   r   r   rT   a   s    rT   c                  C   sh   ddl m} m} | t td }| dd dd td |ks J | dd dd td |d	 ks2J d S )
Nr   dumpsloadsc                   S      t S r<   r%   r   r   r   r   <lambda>p       ztest_getstate.<locals>.<lambda>FrO   c                   S   r\   r<   r]   r   r   r   r   r^   r   r_   Tr   )dillrZ   r[   r%   r>   )rZ   r[   rL   r   r   r   test_getstatel   s   ra   c                  C   sz   ddl m} m} ddlmam} dd }dtd< | |}t dad	ab||}|d	}dd
lma |d	|ks;J d S )Nr   rY   )sinpic                 S   s   t | |  S r<   rb   r9   r   r   r   sinc{   r;   ztest_deleted.<locals>.sincTrP   rb   r   rd   )	r`   rZ   r[   mathrb   rc   r	   globalspop)rZ   r[   rc   re   _sincsinc_rQ   r   r   r   test_deletedv   s   rk   c                  C   s   z
ddl m} m} W n
 ty   Y d S w dtd< | d}|d }||g|}t}t }t|ddd |tu s9J |t u s@J d S )Nr   )symbolslambdifyTrP   r3   r   )rP   builtin)sympyrl   rm   ImportErrorr	   minrg   r   )rl   rm   r3   r=   r%   zr&   r   r   r   test_lambdify   s   rs   __main__)"dill.detectr   r   r   r   r   r   r   r`   r	   
dill._dillr
   pickler   r   sysr!   r*   r6   r(   rL   rJ   r:   r?   r@   rS   r>   objectrT   r%   ra   rk   rs   r   r   r   r   r   <module>   s8   $

!	

