
    bi                     d   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        yy)    )	getsourcegetname_wrap	getimport)
importable)IS_PYPYNi 
c                     | dz  S N    xs    Q/home/cdr/jupyterlab/.venv/lib/python3.12/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y)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y)BarN)r   r   r    r   r   r   r&   r&   "   s    r   r&   c                  0   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 y )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-   '   s   	1/	//	/	16	66	6	1O	OO	O	s			s			s			q!			q!			q!									31	11	1	3X	XX	Xr   c                  ,    t        t               dk(  sJ y )Nz"from dill.source import getimport
)r   r   r   r   test_itselfr/   9   s    	9	D	DD	Dr   c                  $   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 y )	Nzpow
d   100
TzTrue
)builtinzfrom builtins import pow
None
)r   powr   r   r   test_builtinr6   =   s    	37	""	"	37	""	"	4H	$$	$	3	%)E	EE	E	3	%	00	0	4	&(	22	2	4H	$$	$	4	&(	22	2r   c                  0    ddl m}  t        |       dk(  sJ y )Nr   sinzfrom math import sin
)mathr9   r   r8   s    r   test_importedr;   J   s    	33	33	3r   c                  p    t        t              dt        z  k(  sJ t        t              dt        z  k(  sJ y )Nfrom %s import add
from %s import squared
)r   r#   r   squaredr   r   r   test_dynamicr@   O   s3    	31H<	<<	<	7	9HD	DD	Dr   c                     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 y )Nr   )BytesIOzfrom _io import BytesIO
zfrom io import BytesIO
from %s import Foo
)
iorB   r   sys
hexversionPY310br   r   r   _foo)StringIOr"   r   ss       r   test_classesrK   U   s{    $!!s~~/a6P!j!	8		!!	!	1			31H<	<<	<	42X=	==	=r   c                     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 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      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        j
                  d
d      dt        z  k(  sJ t        t        j
                  d
d      dt        z  k(  sJ t        d d
d      dk(  sJ t        dd
d      d	k(  sJ y )NFsourcer=   r>   rC   zfrom %s import bar
r4   r1   r2   Tzdef add(x,y):
  return x+y
zsquared = lambda x:x**2
r+   r,   z!def bar(self, x):
  return x*x+x
memo)aliasrN   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   rN   )r   r#   r   r?   r   r   rH   r&   r   r   r   test_importablerQ   c   s   	C	&*@8*K	KK	K	GE	*.H8.S	SS	S	C	&*@8*K	KK	K	CGGE	*.Dx.O	OO	O	DHHU	+/E/P	PP	P	D	'8	33	3	C	&'	11	1	C	%)H	HH	H	GD	)-H	HH	H	D	&(	22	2	C	%)?	??	?	C	%)f	ff	f	CGGD	)-R	RR	R	CGGE	*.Dx.O	OO	O	CGG6%	8<Z]e<e	ee	e	Cve	48VYa8a	aa	a	G6%	8<^ai<i	ii	i	G6$	7;]	]]	]	Cvd	37d	dd	d	Dt	4	GG	G	Cvd	3~	EE	E	Ce	48NQY8Y	YY	Y	GT%	8<VYa<a	aa	a	Ce	48NQY8Y	YY	Y	CGGT%	8<RU]<]	]]	]	DHHd5	9=SV^=^	^^	^	D$u	5	AA	A	Ce	4	??	?r   c                     	 dd l } | j                  } |g d      }t        |d      dk(  sJ t        |d      d|j                  z  k(  sJ t        |d      dk(  sJ t        |d      d|j                  z  k(  sJ | j                  } |d      }t        |d      dk(  sJ t        |d      d	|j                  z  k(  sJ t        |d      dk(  sJ t        |d      d	|j                  z  k(  sJ | j
                  } |d      }dd l}|j                         5  |j                  d
t               |j                  d
t               t        | d      r| j                  t        u rdnd}nd}d d d        t        |d      dd|dk(  sJ t        |d      d|j                  d|dk(  sJ t        |d      d|d|dk(  sJ t        |d      d|j                  d|dk(  sJ y # 1 sw Y   xY w# t        $ r Y y w xY w)Nr   )   r      FrM   z)from numpy import array
array([1, 2, 3])
zfrom %s import array
Tz!from numpy import int64
int64(0)
zfrom %s import int64
ignore)categoryboolbool_zfrom numpy import 
z(False)
zfrom z import )numpyarrayr   r   int64rX   warningscatch_warningsfilterwarningsFutureWarningDeprecationWarninghasattrrW   ImportError)npr"   r   r]   bs        r   
test_numpyrf      s   
A	'
Aa&*WWWWa&*BQ\\*QQQQa%)VVVVa%)AALL)PPPP
A	!Aa&*OOOOa&*BQ\\*QQQQa%)NNNNa%)AALL)PPPP
A	!A		 	 	" =A3EF2vrww$GFa	
 a&QRST*UUUUa&1<<PQ*RRRRa%PQRS)TTTTa%!,,q)QQQQ  
ds,   DG= AG10B G= 1G:6G= =	H	H	c                  H    t        t        d      j                  d      sJ y )NTrM   zOimport dill
class Foo(object):
  def bar(self, x):
    return x*x+x
dill.loads()r   rH   
startswithr   r   r   test_foori      s*    	D	&	1	1  3H  
I  I  
Ir   __main__)dill.sourcer   r   r   r   r   
dill._dillr   rE   rG   r   r   r   objectr   rH   r#   r?   r&   _barr-   r/   r6   r;   r@   rK   rQ   rf   ri   r   r   r   r   <module>ro      s    = < "  
	 &  u  
uY$E	34
E
>@@<I zMNONNLJ r   