
    h                     f   S SK JrJrJrJr  S SK Jr  S SKJr  S SKrSr	S r
S rS r " S	 S
\5      r\" 5       rS rS r " S S5      r\" 5       rS rS rS rS rS rS rS rS rS r\S:X  a@  \" 5         \" 5         \" 5         \" 5         \" 5         \" 5         \" 5         \" 5         \" 5         gg)    )	getsourcegetname_wrap	getimport)
importable)IS_PYPYNi 
c                     U S-  $ N    xs    P/home/james-whalen/.local/lib/python3.13/site-packages/dill/tests/test_source.py<lambda>r      s    ad    c                     [        U 5      U -
  $ N)fr   s    r   gr      s    1/r   c                     S nU" U 5      U -
  $ )Nc                     U $ r   r   r   s    r   r   h.<locals>.g   s    1Hr   r   )r   r   s     r   hr      s    	
1/r   c                       \ rS rSrS rSrg)Foo   c                     X-  U-   $ r   r   )selfr   s     r   barFoo.bar   s    3q5Lr   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    r   r   c                 
    X-   $ r   r   )r   ys     r   addr(      s	    	
*r   c                     U S-  $ r
   r   r   s    r   r   r       s    1a4r   c                       \ rS rSrSrg)Bar"   r   N)r!   r"   r#   r$   r%   r   r   r   r+   r+   "   s    r   r+   c                  J   [        [        5      S:X  d   e[        [        5      S:X  d   e[        [        5      S:X  d   e[	        [        5      S:X  d   e[	        [        5      S:X  d   e[	        [        5      S:X  d   e[        [        5      " S5      S:X  d   e[        [        5      " S5      S	:X  d   e[        [        5      " S5      S
:X  d   e[	        [        5      S:X  d   e[	        [        5      S:X  d   e[        [        5      S:X  d   e[        [        5      S:X  d   eg )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_getsourcer3   '   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                  .    [        [         5      S:X  d   eg )Nz"from dill.source import getimport
)r   r   r   r   test_itselfr5   9   s    	9	D	DD	Dr   c                     [        [        5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        [        SS9S:X  d   e[        SSS9S:X  d   e[        SSS9S:X  d   e[        S 5      S:X  d   e[        S SS9S:X  d   eg )	Nzpow
d   100
TzTrue
)builtinzfrom builtins import pow
None
)r   powr   r   r   test_builtinr<   =   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                  2    SSK Jn   [        U 5      S:X  d   eg )Nr   sinzfrom math import sin
)mathr?   r   r>   s    r   test_importedrA   J   s    	33	33	3r   c                  t    [        [        5      S[        -  :X  d   e[        [        5      S[        -  :X  d   eg )Nfrom %s import add
from %s import squared
)r   r(   r!   squaredr   r   r   test_dynamicrF   O   s3    	31H<	<<	<	7	9HD	DD	Dr   c                  $   SSK Jn   Sn[        (       d  [        R                  [
        :  a  UOSnU " 5       n[        U 5      U:X  d   e[        U5      U:X  d   e[        [        5      S[        -  :X  d   e[        [        5      S[        -  :X  d   eg )Nr   )BytesIOzfrom _io import BytesIO
zfrom io import BytesIO
from %s import Foo
)
iorH   r   sys
hexversionPY310br   r   r!   _foo)StringIOr'   r   ss       r   test_classesrQ   U   s}    $!!Gs~~/a6P!j!	8		!!	!	1			31H<	<<	<	42X=	==	=r   c                     [        [        SS9S[        -  :X  d   e[        [        SS9S[        -  :X  d   e[        [        SS9S[        -  :X  d   e[        [        R
                  SS9S[        -  :X  d   e[        [        R
                  SS9S[        -  :X  d   e[        S SS9S:X  d   e[        SSS9S	:X  d   e[        [        S
S9S:X  d   e[        [        S
S9S:X  d   e[        S S
S9S:X  d   e[        [        S
S9S:X  d   e[        [        S
S9S:X  d   e[        [        R
                  S
S9S:X  d   e[        [        R
                  SS9S[        -  :X  d   e[        [        R
                  SSS9S[        -  :X  d   e[        [        SSS9S[        -  :X  d   e[        [        SSS9S[        -  :X  d   e[        [        SS
S9S:X  d   e[        [        SS
S9S:X  d   e[        S SS
S9S:X  d   e[        SSS
S9S:X  d   e[        [        S
SS9S[        -  :X  d   e[        [        S
SS9S[        -  :X  d   e[        [        S
SS9S[        -  :X  d   e[        [        R
                  S
SS9S[        -  :X  d   e[        [        R
                  S
SS9S[        -  :X  d   e[        S S
SS9S:X  d   e[        SS
SS9S	:X  d   eg )NFsourcerC   rD   rI   zfrom %s import bar
r:   r7   r8   Tzdef add(x,y):
  return x+y
zsquared = lambda x:x**2
r1   r2   z!def bar(self, x):
  return x*x+x
memo)aliasrT   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
)r9   rT   )r   r(   r!   rE   r   r   rN   r+   r   r   r   test_importablerW   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                      SS K n U R                  nU" / SQ5      n[        USS9S:X  d   e[        USS9SUR                  -  :X  d   e[        USS9S:X  d   e[        USS9SUR                  -  :X  d   eU R                  nU" S5      n[        USS9S:X  d   e[        USS9S	UR                  -  :X  d   e[        USS9S:X  d   e[        USS9S	UR                  -  :X  d   eU R
                  nU" S5      nSS KnUR                  5          UR                  S
[        S9  UR                  S
[        S9  [        U S5      (       a  U R                  [        L a  SOSnOSnS S S 5        [        USS9SW< SU< S3:X  d   e[        USS9SUR                  < SU< S3:X  d   e[        USS9SU< SU< S3:X  d   e[        USS9SUR                  < SU< S3:X  d   eg ! , (       d  f       N= f! [         a     g f = f)Nr   )   r      FrS   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"   int64r^   warningscatch_warningsfilterwarningsFutureWarningDeprecationWarninghasattrr]   ImportError)npr'   r   rc   bs        r   
test_numpyrl      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
G2 AG! B G2 !
G/+G2 2
G?>G?c                  L    [        [        SS9R                  S5      (       d   eg )NTrS   zOimport dill
class Foo(object):
  def bar(self, x):
    return x*x+x
dill.loads()r   rN   
startswithr   r   r   test_fooro      s0    	D	&	1	1  3H  
I  
I  I  
Ir   __main__)dill.sourcer   r   r   r   r   
dill._dillr   rK   rM   r   r   r   objectr   rN   r(   rE   r+   _barr3   r5   r<   rA   rF   rQ   rW   rl   ro   r!   r   r   r   <module>ru      s    = < "  
	 &  u  
uY$E	34
E
>@@<I zMNONNLJ r   