
    h                         S r SSKrSSKrSSKJr  SSKrSSKJr  S\R                  S'    " S S\5      r " S	 S
\5      r	S r
S rS r\S:X  a  \
" 5         \" 5         \" 5         gg)z;
test dill's ability to pickle abstract base class objects
    N)ABC)FunctionTypeTrecursec                      \ rS rSr\R
                  S 5       r\\R
                  S 5       5       r\R                  \R
                  S 5       5       r\
\R
                  S 5       5       r\\R
                  S 5       5       rSrg)	OneTwoThree   c                     g)zA methodN selfs    M/home/james-whalen/.local/lib/python3.13/site-packages/dill/tests/test_abc.pyfooOneTwoThree.foo   s     	    c                     g)zProperty getterNr
   r   s    r   barOneTwoThree.bar        	r   c                     g)zProperty setterNr
   r   values     r   r   r      r   r   c                     g)zClass methodNr
   clss    r   cfooOneTwoThree.cfoo%   r   r   c                      g)zStatic methodNr
   r
   r   r   sfooOneTwoThree.sfoo+   r   r   r
   N)__name__
__module____qualname____firstlineno__abcabstractmethodr   propertyr   setterclassmethodr   staticmethodr   __static_attributes__r
   r   r   r   r      s         	ZZ        r   r   c                   t    \ rS rSrS rS r\S 5       r\R                  S 5       r\	S 5       r
\S 5       rSrg	)
	EasyAsAbc1   c                     S U l         g N_barr   s    r   __init__EasyAsAbc.__init__2   s	    	r   c                     g)NInstance Method FOOr
   r   s    r   r   EasyAsAbc.foo5   s    $r   c                     U R                   $ r/   r0   r   s    r   r   EasyAsAbc.bar8   s    yyr   c                     Xl         g r/   r0   r   s     r   r   r8   <   s    	r   c                     g)NClass Method CFOOr
   r   s    r   r   EasyAsAbc.cfoo@   s    "r   c                      g)NStatic Method SFOOr
   r
   r   r   r   EasyAsAbc.sfooD   s    #r   r0   N)r    r!   r"   r#   r2   r   r&   r   r'   r(   r   r)   r   r*   r
   r   r   r,   r,   1   s`    %   	ZZ  # # $ $r   r,   c                  2   [         R                  " [        5      [        Ld   e[         R                  " [        5      [        Ld   e[        R
                  " 5          [        R                  " S[         R                  5        [         R                  " [        SS9[        L d   e[         R                  " [        SS9[        L d   e S S S 5        [        5       n S U l        [         R                  " U 5      n[        U5      [        U 5      L d   e[        UR                  5      [        L d   eUR                  S5      S:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  5       S	:X  d   eg ! , (       d  f       N= f)
NignoreT)byrefc                     U S-  $ )N   r
   )xs    r   <lambda>$test_abc_non_local.<locals>.<lambda>S   s    QTr      	   r>   r;   r5   )dillcopyr   r,   warningscatch_warningssimplefilterPicklingWarningr   typer   r   r   r   )instance	depickleds     r   test_abc_non_localrS   H   s5   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*F
Fc                    ^  " S S[         5      n [        R                  " U 5      nXLd   e[        U5      [        U 5      L d   e " U4S jSU5      mT" 5       nUR	                  5       S:X  d   e U" 5         [        S5         e! [         a
  n SnAOSnAff = f[        R                  " UT" 5       45      u  pES[        U5      R                  :X  d   eS[        U5      R                  ;   d   e[        U5      TLd   eX@Ld   eXALd   e[        XT5      (       d   e[        XQ5      (       a   e[        XP5      (       a   eUR                  5       S	[        U5      -   :X  d   eg)
z%
Test using locally scoped ABC class
c                   >    \ rS rSr\R
                  S 5       rS rSrg) test_abc_local.<locals>.LocalABCa   c                     g r/   r
   r   s    r   r   $test_abc_local.<locals>.LocalABC.foob   s    r   c                     [        U 5      $ r/   )reprr   s    r   baz$test_abc_local.<locals>.LocalABC.bazf   s    :r   r
   N)	r    r!   r"   r#   r$   r%   r   r\   r*   r
   r   r   LocalABCrV   a   s    				 
		r   r^   c                   2   >^  \ rS rSrS rUU 4S jrSrU =r$ )test_abc_local.<locals>.Realp   c                     g)NTrue!r
   r   s    r   r    test_abc_local.<locals>.Real.fooq   s    r   c                 &   > S[         TU ]  5       -   $ )NMy )superr\   )r   Real	__class__s    r   r\    test_abc_local.<locals>.Real.bazt   s    5t0222r   r
   )r    r!   r"   r#   r   r\   r*   __classcell__)ri   rh   s   @r   rh   r`   p   s    		3 	3r   rh   rc   zFailed to raise type errorNz.Realrf   )r   rJ   rK   rP   r   print	TypeErrorr    r"   
isinstancer\   r[   )r^   labcrealelabc2pikrh   s         @r   test_abc_localrt   ]   s[   3  99XD:h'''
3t 3 6D88:   
 	*+u   D$&>*JET#Y'''''d3i,,,,,9D      c!!!!#$$$$#((((779S	))))s   2B 
BBc                     [         R                  " SS0 5      n  " S S5      n " S S5      nU R                  U5        [        X 5      (       a   e[        X5      (       d   e[        R
                  " XU45      n[        R                  " U5      u  pEn[        U5      [        U 5      :X  d   e[        Xd5      (       a   e[        XT5      (       d   eg)z/
Test calling metaclass and cache registration
LocalMetaABCr
   c                       \ rS rSrSrg)-test_meta_local_no_cache.<locals>.ClassyClass   r
   Nr    r!   r"   r#   r*   r
   r   r   ClassyClassrx      s    r   r{   c                       \ rS rSrSrg)-test_meta_local_no_cache.<locals>.KlassyClass   r
   Nrz   r
   r   r   KlassyClassr}      s    
r   r   N)r$   ABCMetaregister
issubclassrJ   dumpsloadsrP   )rv   r{   r   reslmabccckcs          r   test_meta_local_no_cacher      s     ;;~r26L   +&+4444k0000
**l=
>CJJsOMEr;$|,,,,"$$$$b    r   __main__)__doc__rJ   r$   r   rL   typesr   settingsr   r,   rS   rt   r   r    r
   r   r   <module>r      sr     
   i # <$ $.4*/*b!0 z r   