
    hi!                        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             dS dS )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    o/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/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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       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 d S )NTF)ds
isfrommainr   squaredr   _bartstmquad
double_add	quadratic	isdynamicr   r
   r   test_isfrommainr,   *   s   	s		t	#	#	#	#	w		4	'	'	'	'	s		t	#	#	#	#	t			$	$	$	$	rv		%	'	'	'	'	rz	"	"e	+	+	+	+	rv		%	'	'	'	'	rw		5	(	(	(	(	rw		5	(	(	(	(	r}	%	%	.	.	.	.	r|	$	$	-	-	-	-	c		e	#	#	#	#	g		%	'	'	'	'	bf			&	&	&	&	bj	!	!U	*	*	*	*	bm	$	$	-	-	-	-	bl	#	#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 d S )Nzf = lambda x: x**2
squared = lambda x:x**2
)r"   _matchlambdar   r$   r&   r   r
   r   test_matchlambdar0   >   sp    	2	3	3333	"=	>	>>>>	5	6	6666	%@	A	AAA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 d S )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	5-
++-%	v5	5	5	5	5-$$-%	v.	(	(	(	(-''-%	v.	(	(	(	(-%%-%	v.	(	(	(	(-((-%	v.	(	(	(	(-((-%	v6	6	6	6	6-..-%	v:	:	:	:	:----%	v+	+	+	+	+	+	+r
   c                     d                     t          j        t                    d                   dk    sJ d                     t          j        t          j                  d                   dk    sJ d                     t          j        t
                    d                   dk    sJ d                     t          j        t          j                  d                   dk    sJ d                     t          j        t                    d                   dk    sJ d                     t          j        t          j                  d                   dk    sJ d                     t          j        t                    d                   dk    sJ d                     t          j        t          j                  d                   dk    sJ d                     t          j        t          j	                  d                   dk    sJ d                     t          j        t          j
                  d                   dk    sJ d                     t          j        t          j
        d	          d                   d
k    sJ d                     t          j        t          j
        d          d                   dk    sJ d                     t          j        t          j                  d                   dk    sJ d                     t          j        t          j        d          d                   dk    sJ d S )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	N	"26**1-	.	.2Q	Q	Q	Q	Q	"7++A.	/	/3N	N	N	N	N	"2:..q1	2	26Q	Q	Q	Q	Q	"3''*	+	+/E	E	E	E	E	"26**1-	.	.2H	H	H	H	H	"4((+	,	,0F	F	F	F	F	"27++A.	/	/3I	I	I	I	I	"27++A.	/	/  4Q  
Q  
Q  
Q  
Q	"2<003	4	4  9u  
u  
u  
u  
u	"2<===a@	A	A  Fx  
x  
x  
x  
x	"2<4@@@C	D	D  Is  
s  
s  
s  
s	"2=11!4	5	5  :s  
s  
s  
s  
s	"2=DAAA!D	E	E  Jg  
g  
g  
g  
g  
g  
gr
   c                      t          j        d                    t          j        t          j                  d                             d                    t          j        t          j        d          d                   k    sJ t          j        d                    t          j        t          j        d          d                   d          d                    t          j        t          j                  d                   k    sJ d S )Nr7   r    Tr8   r   )r"   outdentr;   r<   r'   r*   indentr   r
   r   test_indentrA   o   s    	BGGB-bl;;A>??	@	@BGGBL]^`^jswLxLxLxyzL{D|D|	|	|	|	|	2772,R\$GGGJKKQ	O	OSUSZSZ[][lmomy[z[z{|[}S~S~	~	~	~	~	~	~r
   c                  B   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 d S )Nrawaliasmod   r      )execr"   
dumpsourcer   r&   r$   _wraplocals    r   test_dumpsourcerN   t   si   
%r}S&&&E222r}RV5)))2u555	ua		leEl1Q//	/	/	/	/r}WE***B666r}RZu---r5999	uaLE%LOO	+	+	+	+	#q		/rx//!44	4	4	4	4	'		1		!5"*!5!5a!8!8	8	8	8	8	8	8r
   c                     t          j        t                    t          j        t          d                              d          k    sJ t          j        t
          j                  t          j        t
          j        d                              d          k    sJ t          j        t                    t          j        t          d                              d          k    sJ t          j        t
          j                  t          j        t
          j        d                              d          k    sJ t          j        t                    t          j        t          d                              d          k    sJ t          j        t
          j                  t          j        t
          j        d                              d          k    sJ t          j        t          j	                  t          j        t          j	        d                              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 d S )
NT)fqn.r   r$   r   r(   funcdec)r"   
_namespacer   getnamesplitr&   r$   r   r'   r(   r)   r*   r   r
   r   	test_namerW      s   	s		rz#4888>>sCC	C	C	C	C	rv		"*RV">">">"D"DS"I"I	I	I	I	I	w		2:g4#@#@#@#F#Fs#K#K	K	K	K	K	rz	"	"bj&F&F&F&L&LS&Q&Q	Q	Q	Q	Q	s		rz#4888>>sCC	C	C	C	C	rv		"*RV">">">"D"DS"I"I	I	I	I	I	rw		2:bg4#@#@#@#F#Fs#K#K	K	K	K	K 
CE	!	!	!	!	BF		u	$	$	$	$	G				)	)	)	)	BJ		9	,	,	,	,	CE	!	!	!	!	BF		u	$	$	$	$	BG			&	&	&	&	BM	"	"f	,	,	,	,	BL	!	!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 d S )NrC   rD   rF   rG   r   rH   )rG   r   rH   )rI   r"   	getimportr   r&   r$   r   rU   r'   r(   sumrL   s    r   test_getimportr[      s   
%r|Cu%%%r5111r|BF%((("e444	ua		leEl1Q//	/	/	/	/r|G5)))2u555r|BJe,,,b%888	uaLE%LOO	+	+	+	+r|Cu%%%r5111r|BF%((("e444	E%L	!	!RZe%=%=	=	=	=	=r|BG5)))2u555	u		WWW	%	%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 d S )NF)sourceT)r"   
importabler   rY   	getsourcer$   r   r&   r   r
   r   test_importabler`      s   	s5	)	)	)R\#->->	>	>	>	>	s		r|C00	0	0	0	0	wu	-	-	-g1F1F	F	F	F	F	w		2<#8#8	8	8	8	8	s5	)	)	)R\#->->	>	>	>	>	s		r|C00	0	0	0	0	rv		",rv"6"6	6	6	6	6	rvd	+	+	+r|BF/C/C	C	C	C	C	rz	"	"bl2:&>&>	>	>	>	>	rz$	/	/	/2<
3K3K	K	K	K	K	rv		",rv"6"6	6	6	6	6	rvd	+	+	+r|BF/C/C	C	C	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   
 N         &    suu   -       
suu              - - -(B B B, , ,2g g g"  
	9 	9 	9+ + +,A A A D D D z//+---/)+++./ r
   