
    bi!                     H   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
dlZd
dlZd
dlm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)z
check that dill.source performs as expected with changes to locals in 3.13.0b1
see: https://github.com/python/cpython/issues/118888
c                     | dz  S N    xs    R/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dill/tests/test_sources.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       Nc                     t        j                  t              dk(  sJ t        j                  t              dk(  sJ t        j                  t              dk(  sJ t        j                  t
              dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j
                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t              dk(  sJ t        j                  t              dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ y )NTF)ds
isfrommainr   squaredr   _bartstmquad
double_add	quadratic	isdynamicr   r
   r   test_isfrommainr,   *   s   	s	t	##	#	w	4	''	'	s	t	##	#	t		$$	$	rvv	%	''	'	rzz	"e	++	+	rvv	%	''	'	rww	5	((	(	rww	5	((	(	r}}	%	..	.	r||	$	--	-	c	e	##	#	g	%	''	'	bff		&&	&	bjj	!U	**	*	bmm	$	--	-	bll	#u	,,	,r
   c                     t        j                  t        d      sJ t        j                  t        d      sJ t        j                  t        j                  d      sJ t        j                  t        j                  d      sJ y )Nzf = lambda x: x**2
squared = lambda x:x**2
)r"   _matchlambdar   r$   r&   r   r
   r   test_matchlambdar0   >   s^    	2	33	3	"=	>>	>	5	66	6	%@	AA	Ar
   c                     t        j                  t              \  } }| |   dk(  sJ t        j                  t        j                        \  } }| |   dk(  sJ t        j                  t              \  } }| |   dk(  sJ t        j                  t        j                        \  } }| |   dk(  sJ t        j                  t
              \  } }| |   dk(  sJ t        j                  t        j
                        \  } }| |   dk(  sJ t        j                  t              \  } }| |   dk(  sJ t        j                  t        j                        \  } }| |   dk(  sJ t        j                  t        j                        \  } }| |   dk(  sJ t        j                  t        j                        \  } }| |   dk(  sJ t        j                  t        j                        \  } }| |   dk(  sJ y )Nzdef add(x,y):
r.   zclass Bar:
zdef quad(a=1, b=1, c=0):
z    def func(*args, **kwds):
z  def dec(f):
)r"   
findsourcer   r&   r$   r   r%   r'   r(   r)   r*   )lineslinenos     r   test_findsourcer5   E   s   --$-%	v+	++	+--'-%	v+	++	+--(-%	v5	55	5--

+-%	v5	55	5--$-%	v.	((	(--'-%	v.	((	(--%-%	v.	((	(--(-%	v.	((	(--(-%	v6	66	6--.-%	v:	::	:----%	v+	++	+r
   c                     dj                  t        j                  t              d         dk(  sJ dj                  t        j                  t        j                        d         dk(  sJ dj                  t        j                  t
              d         dk(  sJ dj                  t        j                  t        j
                        d         dk(  sJ dj                  t        j                  t              d         dk(  sJ dj                  t        j                  t        j                        d         dk(  sJ dj                  t        j                  t              d         dk(  sJ dj                  t        j                  t        j                        d         dk(  sJ dj                  t        j                  t        j                        d         dk(  sJ dj                  t        j                  t        j                        d         dk(  sJ dj                  t        j                  t        j                  d	      d         d
k(  sJ dj                  t        j                  t        j                  d      d         dk(  sJ dj                  t        j                  t        j                        d         dk(  sJ dj                  t        j                  t        j                  d      d         dk(  sJ y )N r    zdef add(x,y):
  return x+y
r.   zclass Bar:
  pass
aM  def quad(a=1, b=1, c=0):
  inverted = [False]
  def invert():
    inverted[0] = not inverted[0]
  def dec(f):
    def func(*args, **kwds):
      x = f(*args, **kwds)
      if inverted[0]: x = -x
      return a*x**2 + b*x + c
    func.__wrapped__ = f
    func.invert = invert
    func.inverted = inverted
    return func
  return dec
zu  def dec(f):
    def func(*args,**kwds):
      fx = f(*args,**kwds)
      return a*fx**2 + b*fx + c
    return func
Tlstripzkdef dec(f):
  def func(*args,**kwds):
    fx = f(*args,**kwds)
    return a*fx**2 + b*fx + c
  return func
)	enclosingzdef quad_factory(a=1,b=1,c=0):
  def dec(f):
    def func(*args,**kwds):
      fx = f(*args,**kwds)
      return a*fx**2 + b*fx + c
    return func
  return dec
zs    def func(*args, **kwds):
      x = f(*args, **kwds)
      if inverted[0]: x = -x
      return a*x**2 + b*x + c
)joinr"   getsourcelinesr   r&   r$   r   r%   r'   r(   r*   r)   r   r
   r   test_getsourcelinesr=   ^   s   	""3'*	+/N	NN	N	""266*1-	.2Q	QQ	Q	""7+A.	/3N	NN	N	""2::.q1	26Q	QQ	Q	""3'*	+/E	EE	E	""266*1-	.2H	HH	H	""4(+	,0F	FF	F	""277+A.	/3I	II	I	""277+A.	/  4Q  
Q  Q  
Q	""2<<03	4  9u  
u  u  
u	""2<<=a@	A  Fx  
x  x  
x	""2<<4@C	D  Is  
s  s  
s	""2==1!4	5  :s  
s  s  
s	""2==DA!D	E  Jg  
g  g  
gr
   c                     t        j                  dj                  t        j                  t        j
                        d               dj                  t        j                  t        j
                  d      d         k(  sJ t        j                  dj                  t        j                  t        j
                  d      d         d      dj                  t        j                  t        j
                        d         k(  sJ y )Nr7   r    Tr8   r   )r"   outdentr;   r<   r'   r*   indentr   r
   r   test_indentrA   o   s    	BGGB--bll;A>?	@BGGBL]L]^`^j^jswLxyzL{D|	||	|	2772,,R\\$GJKQ	OSUSZSZ[][l[lmomymy[z{|[}S~	~~	~r
   c                     i } t        t        j                  t        d      i |        t        t        j                  t        j                  d      i |         | d   dd       | d   dd      k(  sJ t        t        j                  t
        d      i |        t        t        j                  t        j
                  d      i |         | d   d       | d   d      k(  sJ  t        j                  t              dd       t        j                  t        j                        dd      k(  sJ  t        j                  t
              d       t        j                  t        j
                        d      k(  sJ y )Nrawaliasmod   r      )execr"   
dumpsourcer   r&   r$   _wraplocals    r   test_dumpsourcerN   t   s   
%r}}S&E2r}}RVV5)2u5	ua	leEl1Q/	//	/r}}WE*B6r}}RZZu-r59	uaLE%LO	++	+	#q	/rxx/!4	44	4	'	1	!5"**!5a!8	88	8r
   c                     t        j                  t              t        j                  t        d      j	                  d      k(  sJ t        j                  t
        j                        t        j                  t
        j                  d      j	                  d      k(  sJ t        j                  t              t        j                  t        d      j	                  d      k(  sJ t        j                  t
        j                        t        j                  t
        j                  d      j	                  d      k(  sJ t        j                  t              t        j                  t        d      j	                  d      k(  sJ t        j                  t
        j                        t        j                  t
        j                  d      j	                  d      k(  sJ t        j                  t        j                        t        j                  t        j                  d      j	                  d      k(  sJ t        j                  t              dk(  sJ t        j                  t
        j                        dk(  sJ t        j                  t              dk(  sJ t        j                  t
        j                        dk(  sJ t        j                  t              dk(  sJ t        j                  t
        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        dk(  sJ t        j                  t        j                        d	k(  sJ y )
NT)fqn.r   r$   r   r(   funcdec)r"   
_namespacer   getnamesplitr&   r$   r   r'   r(   r)   r*   r   r
   r   	test_namerW      sD   	s	rzz#48>>sC	CC	C	rvv	"**RVV">"D"DS"I	II	I	w	2::g4#@#F#Fs#K	KK	K	rzz	"bjj&F&L&LS&Q	QQ	Q	s	rzz#48>>sC	CC	C	rvv	"**RVV">"D"DS"I	II	I	rww	2::bgg4#@#F#Fs#K	KK	K 
CE	!!	!	BFF	u	$$	$	G			))	)	BJJ	9	,,	,	CE	!!	!	BFF	u	$$	$	BGG		&&	&	BMM	"f	,,	,	BLL	!U	**	*r
   c                     i } t        t        j                  t        d      i |        t        t        j                  t        j                  d      i |         | d   dd       | d   dd      k(  sJ t        t        j                  t
        d      i |        t        t        j                  t        j
                  d      i |         | d   d       | d   d      k(  sJ t        t        j                  t        d      i |        t        t        j                  t        j                  d      i |        t        j                  | d         t        j                  | d         k(  sJ t        t        j                  t        j                  d      i |           | d          t              g d        t        j                         t              g d      k(  sJ y )NrC   rD   rF   rG   r   rH   )rG   r   rH   )rI   r"   	getimportr   r&   r$   r   rU   r'   r(   sumrL   s    r   test_getimportr[      sa   
%r||Cu%r51r||BFF%("e4	ua	leEl1Q/	//	/r||G5)2u5r||BJJe,b%8	uaLE%LO	++	+r||Cu%r51r||BFF%("e4	E%L	!RZZe%=	==	=r||BGG5)2u5	u	W	%3)@	@@	@r
   c                     t        j                  t        d      t        j                  t              k(  sJ t        j                  t              t        j                  t              k(  sJ t        j                  t
        d      t        j                  t
              k(  sJ t        j                  t
              t        j                  t
              k(  sJ t        j                  t        d      t        j                  t              k(  sJ t        j                  t              t        j                  t              k(  sJ t        j                  t        j                        t        j                  t        j                        k(  sJ t        j                  t        j                  d      t        j                  t        j                        k(  sJ t        j                  t        j
                        t        j                  t        j
                        k(  sJ t        j                  t        j
                  d      t        j                  t        j
                        k(  sJ t        j                  t        j                        t        j                  t        j                        k(  sJ t        j                  t        j                  d      t        j                  t        j                        k(  sJ y )NF)sourceT)r"   
importabler   rY   	getsourcer$   r   r&   r   r
   r   test_importabler`      s   	s5	)R\\#->	>>	>	s	r||C0	00	0	wu	-g1F	FF	F	w	2<<#8	88	8	s5	)R\\#->	>>	>	s	r||C0	00	0	rvv	",,rvv"6	66	6	rvvd	+r||BFF/C	CC	C	rzz	"bll2::&>	>>	>	rzz$	/2<<

3K	KK	K	rvv	",,rvv"6	66	6	rvvd	+r||BFF/C	CC	Cr
   __main__)__doc__r   r   r   objectr   _foor   r$   r   r%   test_sourcer&   test_mixinsr'   dill.sourcer]   r"   r,   r0   r5   r=   rA   rN   rW   r[   r`   r   r   r
   r   <module>rh      s   
  &  u  
u   -(B,2g"
	9+,A D z-+ r
   