
    yIf                        d dl mZmZmZmZ d dl mZ d dlmZ d dlZdZ	d Z
d Zd Z G d	 d
e          Z e            Zd Zd Z G d d          Z e            Zd Zd Zd Zd Zd Zd Zd Zd Zd Zedk    r\ e              e              e              e              e              e              e              e              e             dS dS )    )	getsourcegetname_wraplikely_import)getimportable)IS_PYPYNi 
c                     | dz  S N    xs    J/var/www/piapp/venv/lib/python3.11/site-packages/dill/tests/test_source.py<lambda>r      s
    ad     c                 &    t          |           | z
  S N)fr   s    r   gr      s    1/r   c                 $    d } ||           | z
  S )Nc                     | S r   r   r   s    r   r   zh.<locals>.g   s    1Hr   r   )r   r   s     r   hr      s    	
1/r   c                       e Zd Zd ZdS )Fooc                     ||z  |z   S r   r   )selfr   s     r   barzFoo.bar   s    Q3q5Lr   N)__name__
__module____qualname__r   r   r   r   r   r      s#            r   r   c                     | |z   S r   r   )r   ys     r   addr#      s    	
1*r   c                     | dz  S r
   r   r   s    r   r   r       s
    1a4 r   c                       e Zd ZdS )BarN)r   r   r    r   r   r   r&   r&   "   s        $r   r&   c                     t          t                    dk    sJ t          t                    dk    sJ t          t                    dk    sJ t	          t                    dk    sJ t	          t                    dk    sJ t	          t                    dk    sJ  t          t                    d          dk    sJ  t          t                    d          d	k    sJ  t          t                    d          d
k    sJ t	          t                    dk    sJ t	          t                    dk    sJ t          t                    dk    sJ t          t                    dk    sJ d S )Nzf = lambda x: x**2
zdef g(x): return f(x) - x
z1def h(x):
  def g(x): return x
  return g(x) - x
r   r   r            r   r   r&   class Bar:
  pass
8class Foo(object):
  def bar(self, x):
    return x*x+x
)r   r   r   r   r   r   r   r&   r   r   r   test_getsourcer-   '   sP   	1/	/	/	/	/	16	6	6	6	6	1O	O	O	O	O	s					s					s					q!					q!					q!															31	1	1	1	1	3X	X	X	X	X	X	Xr   c                  :    t          t                     dk    sJ d S )Nz&from dill.source import likely_import
)r   r   r   r   test_itselfr/   9   s"    	}	%	%'P	P	P	P	P	P	Pr   c                  z   t          t                    dk    sJ t          d          dk    sJ t          d          dk    sJ t          t          d          dk    sJ t          dd          dk    sJ t          dd          dk    sJ t          d           dk    sJ t          d d          dk    sJ d S )	Nzpow
d   100
TzTrue
explicitzfrom builtins import pow
None
)r   powr   r   r   test_builtinr7   =   s    	s		w	&	&	&	&	s		w	&	&	&	&	t			(	(	(	(	sT	*	*	*.J	J	J	J	J	sT	*	*	*g	5	5	5	5	td	+	+	+x	7	7	7	7	t			(	(	(	(	td	+	+	+x	7	7	7	7	7	7r   c                  <    ddl m}  t          |           dk    sJ d S )Nr   sinzfrom math import sin
)mathr:   r   r9   s    r   test_importedr<   J   s4    	s		7	7	7	7	7	7	7r   c                      t          t                    dt          z  k    sJ t          t                    dt          z  k    sJ d S )Nfrom %s import add
from %s import squared
)r   r#   r   squaredr   r   r   test_dynamicrA   O   sF    	s		5@	@	@	@	@	w		#=#H	H	H	H	H	H	Hr   c                  F   ddl m}  d}t          st          j        t
          k    r|nd} |             }t          |           |k    sJ t          |          |k    sJ t          t                    dt          z  k    sJ t          t                    dt          z  k    sJ d S )Nr   )BytesIOzfrom _io import BytesIO
zfrom io import BytesIO
from %s import Foo
)
iorC   r   sys
hexversionPY310br   r   r   _foo)StringIOr"   r   ss       r   test_classesrL   U   s    $$$$$$!!Ps~//aa6P!hjj!	x	 	 A	%	%	%	%	q		Q					s		5@	@	@	@	@	t		 6 A	A	A	A	A	A	Ar   c                     t          t                    dt          z  k    sJ t          t                    dt          z  k    sJ t          t                    dt          z  k    sJ t          t          j                  dt          z  k    sJ t          t          j                  dt          z  k    sJ t          d           dk    sJ t          d          dk    sJ t          t          d	          d
k    sJ t          t          d	          dk    sJ t          d d	          dk    sJ t          t          d	          dk    sJ t          t          d	          dk    sJ t          t          j        d	          dk    sJ t          t          j        d	          dt          z  k    sJ t          t          j        dd          dt          z  k    sJ t          t          dd          dt          z  k    sJ t          t          dd          dt          z  k    sJ t          t          dd          dk    sJ t          t          dd          dk    sJ t          d dd          dk    sJ t          ddd          dk    sJ t          t          d          dt          z  k    sJ t          t          d          dt          z  k    sJ t          t          d          dt          z  k    sJ t          t          j        d          dt          z  k    sJ t          t          j        d          dt          z  k    sJ t          d d          dk    sJ t          dd          dk    sJ d S )Nr>   r?   rD   zfrom %s import bar
r5   r1   r2   Fbynamezdef add(x,y):
  return x+y
zsquared = lambda x:x**2
r+   r,   z!def bar(self, x):
  return x*x+x
Tmemo)aliasrO   zfrom %s import bar as memo
zfrom %s import Foo as memo
zfrom %s import squared as memo
zmemo = squared = lambda x:x**2
z'def add(x,y):
  return x+y

memo = add
zmemo = None
zmemo = 100
r3   )r   r#   r   r@   r   r   rI   r&   r   r   r   test_importablerR   c   s   	s		5@	@	@	@	@	w		#=#H	H	H	H	H	s		5@	@	@	@	@	sw		#9H#D	D	D	D	D	tx	 	 $:X$E	E	E	E	E	t			(	(	(	(	s		w	&	&	&	&	s5	)	)	)-L	L	L	L	L	wu	-	-	-1L	L	L	L	L	tE	*	*	*h	6	6	6	6	s5	)	)	)-C	C	C	C	C	s5	)	)	)-j	j	j	j	j	swu	-	-	-1V	V	V	V	V	swt	,	,	,0F0Q	Q	Q	Q	Q	swfT	:	:	:>\_g>g	g	g	g	g	s&	6	6	6:X[c:c	c	c	c	c	wfT	:	:	:>`ck>k	k	k	k	k	wfU	;	;	;?a	a	a	a	a	s&	7	7	7;h	h	h	h	h	t6%	8	8	8O	K	K	K	K	s&	7	7	7>	I	I	I	I	sT	*	*	*.Dx.O	O	O	O	O	w	.	.	.2Lx2W	W	W	W	W	sT	*	*	*.Dx.O	O	O	O	O	sw	.	.	.2H82S	S	S	S	S	tx$	/	/	/3IH3T	T	T	T	T	td	+	+	+x	7	7	7	7	sT	*	*	*g	5	5	5	5	5	5r   c                      	 ddl m}   | g d          }t          |          dk    sJ t          |           d| j        z  k    sJ t          |d          dk    sJ t          | d          d| j        z  k    sJ d S # t          $ r Y d S w xY w)Nr   )array)   r      z)from numpy import array
array([1, 2, 3])
zfrom %s import array
FrN   )numpyrT   r   r   ImportError)rT   r   s     r   
test_numpyrY      s    gggALLLLL#;e>N#NNNNN5)))-ZZZZZu---1IEL\1\\\\\\\	ddds   A;A? ?
BBc                  \    t          t          d                              d          sJ d S )NFrN   zOimport dill
class Foo(object):
  def bar(self, x):
    return x*x+x
dill.loads()r   rI   
startswithr   r   r   test_foor\      sH    	tE	*	*	*	5	5  7L  
M  
M  M  M  M  M  Mr   __main__)dill.sourcer   r   r   r   r   
dill._dillr   rF   rH   r   r   r   objectr   rI   r#   r@   r&   _barr-   r/   r7   r<   rA   rL   rR   rY   r\   r   r   r   r   <module>rb      s   A @ @ @ @ @ @ @ @ @ @ @ % % % % % %       



	N         &    suu   -       
suuY Y Y$Q Q Q	8 	8 	88 8 8
I I I
B 
B 
B6 6 6@  M M M zNKMMMLNNNMOOOLNNNLNNNOJLLLHJJJJJ r   