
    h                         S SK r S\ R                  S'   S rSS jr\" S SS9S 5       r\" / S	Q5      rSS
 jr\" S SS S9S 5       r\" 5       r	S r
\
S 5       rS r\S:X  a  \" 5         gg)    NTrecursec                 2   ^ ^^ U 4S jnU4S jnU4S jnX44$ )Nc                     > T $ N xs   P/home/james-whalen/.local/lib/python3.13/site-packages/dill/tests/test_mixins.pyzzzwtf.<locals>.zzz       H    c                     > T $ r   r   )ys   r
   yyywtf.<locals>.yyy   r   r   c                     > T $ r   r   )zs   r
   xxxwtf.<locals>.xxx   r   r   r   )r	   r   r   r   r   r   s   ```   r
   wtfr      s    	.r   c                 6   ^ ^^^^ S/mU4S jmU UUUU4S jnU$ )NFc                      > T S   (       + T S'   g )Nr   r   )inverteds   r
   invertquad.<locals>.invert   s    qk/HQKr   c                 H   >^  UUUU U4S jnT Ul         TUl        TUl        U$ )Nc                  P   > T" U 0 UD6nTS   (       a  U* nTUS-  -  TU-  -   T-   $ )Nr      r   )argskwdsr	   abcfr   s      r
   funcquad.<locals>.dec.<locals>.func   s:    
T
T
a	!1"aq!tVac\Ar   )__wrapped__r   r   )r%   r&   r"   r#   r$   r   r   s   ` r
   decquad.<locals>.dec   s*      DDKDMKr   r   )r"   r#   r$   r)   r   r   s   ``` @@r
   quadr+      s     W("  
*r   r   )r"   r#   c                      [        U 5      $ r   )sum)r    s    r
   
double_addr.   '   s    	Tr   )   r      c                    ^ ^^ U UU4S jnU$ )Nc                    >^  UUUU 4S jnU$ )Nc                  6   > T" U 0 UD6nTUS-  -  TU-  -   T-   $ Nr   r   )r    r!   fxr"   r#   r$   r%   s      r
   r&   'quad_factory.<locals>.dec.<locals>.func2   s+    d?T?br1uWqt^ar   r   )r%   r&   r"   r#   r$   s   ` r
   r)   quad_factory.<locals>.dec1   s        Kr   r   )r"   r#   r$   r)   s   ``` r
   quad_factoryr8   0   s    
 
*r      )r"   r#   r$   c                     U S-   $ )Nr/   r   r   s    r
   quadishr;   9       	
1*r   c                    ^  U 4S jnU$ )Nc                     > T" U 0 UD6nSU-  $ r4   r   )r    r!   r5   r%   s      r
   innerdoubler.<locals>.innerB   s    	
D	D	BR4Kr   r   )r%   r?   s   ` r
   doublerrA   A   s     
,r   c                     SU -  $ r4   r   r   s    r
   	quadruplerC   H   r<   r   c                     [        SSS5      S[        -  :X  d   e[         R                  5         [        SSS5      S[        -  :X  d   e[        R                  " [         5      n U " SSS5      S[        -  :X  d   eU R                  SSS5      [        :X  d   e[         R                  S   (       d  [         R                  5         [        R                  n[        R                  nUR                  UR                  [        5      S   5      S:X  d   eUR                  UR                  [        5      S   5      S:X  d   eUR                  [        S	S
9S[        -  :X  d   eUR                  [        S	S
9S[        -  :X  d   eUR                  [        S	S
9S[        -  :X  d   eUR                  [         S	S
9S[        -  :X  d   eUR                  [        SS
9S:X  d   eUR                  [        SS
9nUR!                  SS5      u  pEpgnUS:X  d   e[#        XEU/5      [#        / SQ5      :X  d   eUR                  [        SS
9nUR!                  SS5      u  pEpcUS:X  d   e[#        XEU/5      [#        / SQ5      :X  d   eUR                  [         SS
9nUR!                  SS5      u  pEphpsUS:X  d   e[#        XEXh/5      [#        / SQ5      :X  d   eg )Nr/   r   r0   r   r%   z8@quad_factory(a=0,b=4,c=0)
def quadish(x):
  return x+1
z(@doubler
def quadruple(x):
  return 2*x
F)sourcezfrom %s import quadish
zfrom %s import quadruple
zfrom %s import quadratic
zfrom %s import double_add
Tzdef doubler(f):
  def inner(*args, **kwds):
    fx = f(*args, **kwds)
    return 2*fx
  return inner

@doubler
def quadruple(x):
  return 2*x

r9   zdef 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

@quad_factory(a=0,b=4,c=0)
def quadish(x):
  return x+1
)a = 0c = 0zb = 4zl
def dec(f):
  def func(*args,**kwds):
    fx = f(*args,**kwds)
    return a*fx**2 + b*fx + c
  return func
)za = 1rI   zb = 1   a  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

@quad(a=0,b=2)
def double_add(*args):
  return sum(args)
)rH   rI   zb = 2zinverted = [True])r.   r5   r   dillcopyr(   r   rF   detect	getsourcefreevarsr;   rC   
importable__name__	quadraticsplitset)	_ddsddresultr"   r#   r$   _ds	            r
   test_mixinsr[   M   s   	Aa	ad	""	"	Aa	be	##	#yy"	Aabe		 
!A	"	$$	$ 
		Q	 {{"{{"	bkk'*3/	04q	qq	q	bkk),S1	26c	cc	c	wu	-1Kh1V	VV	V	y	/3ORZ3Z	ZZ	Z	y	/3ORZ3Z	ZZ	Z	z%	04QT\4\	\\	\	y	.  3L  
L  L  
L===.&<<Q'.!a&	  {  
{  {  
{	a!W89	99	9==4=0&d1%,!a	  H  
H  H  
H	a!W89	99	9==D=1&\\$q)!a!	  o  
o  o  
o	a!Y3OP	PP	Pr   __main__)r/   r/   r   )rK   settingsr   r+   r.   r-   r5   r8   r;   rR   rA   rC   r[   rQ   r   r   r
   <module>r^      s    i   A  	\ A  N	 	 	'QV zM r   