
    bi                         d Z ddlZddlZddlmZ ddlZddlmZ dej                  d<    G d de      Z G d	 d
e      Z	d Z
d Zd Zedk(  r e
         e         e        yy)z;
test dill's ability to pickle abstract base class objects
    N)ABC)FunctionTypeTrecursec                       e Zd Zej                  d        Zeej                  d               Zej                  ej                  d               Ze	ej                  d               Z
eej                  d               Zy)OneTwoThreec                      y)zA methodN selfs    N/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dill/tests/test_abc.pyfoozOneTwoThree.foo   s     	    c                      y)zProperty getterNr	   r
   s    r   barzOneTwoThree.bar        	r   c                      y)zProperty setterNr	   r   values     r   r   zOneTwoThree.bar   r   r   c                      y)zClass methodNr	   clss    r   cfoozOneTwoThree.cfoo%   r   r   c                       y)zStatic methodNr	   r	   r   r   sfoozOneTwoThree.sfoo+   r   r   N)__name__
__module____qualname__abcabstractmethodr   propertyr   setterclassmethodr   staticmethodr   r	   r   r   r   r      s         	ZZ        r   r   c                   l    e Zd Zd Zd Zed        Zej                  d        Zed        Z	e
d        Zy)	EasyAsAbcc                     d | _         y N_barr
   s    r   __init__zEasyAsAbc.__init__2   s	    	r   c                      y)NInstance Method FOOr	   r
   s    r   r   zEasyAsAbc.foo5   s    $r   c                     | j                   S r'   r(   r
   s    r   r   zEasyAsAbc.bar8   s    yyr   c                     || _         y r'   r(   r   s     r   r   zEasyAsAbc.bar<   s	    	r   c                      y)NClass Method CFOOr	   r   s    r   r   zEasyAsAbc.cfoo@   s    "r   c                       y)NStatic Method SFOOr	   r	   r   r   r   zEasyAsAbc.sfooD   s    #r   N)r   r   r   r*   r   r    r   r!   r"   r   r#   r   r	   r   r   r%   r%   1   s`    %   	ZZ  # # $ $r   r%   c                     t        j                  t              t        usJ t        j                  t              t        usJ t	        j
                         5  t	        j                  dt         j                         t        j                  t        d      t        u sJ t        j                  t        d      t        u sJ 	 d d d        t               } d | _        t        j                  |       }t        |      t        |       u sJ t        |j                        t        u sJ |j                  d      dk(  sJ |j                         dk(  sJ |j                         dk(  sJ |j                         d	k(  sJ y # 1 sw Y   xY w)
NignoreT)byrefc                     | dz  S )N   r	   )xs    r   <lambda>z$test_abc_non_local.<locals>.<lambda>S   s
    QT r      	   r2   r0   r,   )dillcopyr   r%   warningscatch_warningssimplefilterPicklingWarningr   typer   r   r   r   )instance	depickleds     r   test_abc_non_localrE   H   s<   99[!44499Yy000		 	 	" =h(<(<=yyD1[@@@yy$/9<<<=
 {H!HL		(#I	?d8n,,,	,...==q   >>3333>>2222==?3333= =s   A+E==Fc                      G d dt               } t        j                  |       }|| usJ t        |      t        |       u sJ  G fdd|              }|j	                         dk(  sJ 	  |        t        d       J # t        $ r
}Y d}~nd}~ww xY wt        j                  |        f      \  }}dt        |      j                  k(  sJ dt        |      j                  v sJ t        |      usJ || usJ ||usJ t        ||      sJ t        ||      rJ t        ||       rJ |j                         d	t        |      z   k(  sJ y)
z-
    Test using locally scoped ABC class
    c                   6    e Zd Zej                  d        Zd Zy) test_abc_local.<locals>.LocalABCc                      y r'   r	   r
   s    r   r   z$test_abc_local.<locals>.LocalABC.foob   s    r   c                     t        |       S r'   )reprr
   s    r   bazz$test_abc_local.<locals>.LocalABC.bazf   s    :r   N)r   r   r   r   r   r   rL   r	   r   r   LocalABCrH   a   s    				 
		r   rM   c                   (     e Zd Zd Z fdZ xZS )test_abc_local.<locals>.Realc                      y)NTrue!r	   r
   s    r   r   z test_abc_local.<locals>.Real.fooq   s    r   c                 &    dt         |          z   S )NMy )superrL   )r   Real	__class__s    r   rL   z test_abc_local.<locals>.Real.bazt   s    5t0222r   )r   r   r   r   rL   __classcell__)rV   rU   s   @r   rU   rO   p   s    		3 	3r   rU   rQ   zFailed to raise type errorNz.RealrS   )r   r<   r=   rB   r   print	TypeErrorr   r   
isinstancerL   rK   )rM   labcrealelabc2pikrU   s         @r   test_abc_localr`   ]   s`   3  99XDx:h'''
3t 3 6D88:   
 	*+u   D$&>*JE3T#Y'''''d3i,,,,,9D      c5!!!#t$$$#x(((779S	))))s   .B 	BBc                     t        j                  ddi       }  G d d      } G d d      }| j                  |       t        ||       rJ t        ||       sJ t	        j
                  | ||f      }t	        j                  |      \  }}}t        |      t        |       k(  sJ t        ||      rJ t        ||      sJ y)z7
    Test calling metaclass and cache registration
    LocalMetaABCr	   c                       e Zd Zy)-test_meta_local_no_cache.<locals>.ClassyClassNr   r   r   r	   r   r   ClassyClassrd      s    r   rf   c                       e Zd Zy)-test_meta_local_no_cache.<locals>.KlassyClassNre   r	   r   r   KlassyClassrh      s    
r   ri   N)r   ABCMetaregister
issubclassr<   dumpsloadsrB   )rb   rf   ri   reslmabccckcs          r   test_meta_local_no_cachers      s     ;;~r26L   +&+|444k<000
**lK=
>CJJsOME2r;$|,,,,"e$$$b%   r   __main__)__doc__r<   r   r   r>   typesr   settingsr   r%   rE   r`   rs   r   r	   r   r   <module>rx      sr     
   i # <$ $.4*/*b!0 z r   