
    hi                         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             dS dS )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dS )OneTwoThreec                     dS )zA methodN selfs    k/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/dill/tests/test_abc.pyfoozOneTwoThree.foo   s	     	    c                     dS )zProperty getterNr	   r
   s    r   barzOneTwoThree.bar   	     	r   c                     dS )zProperty setterNr	   r   values     r   r   zOneTwoThree.bar   r   r   c                     dS )zClass methodNr	   clss    r   cfoozOneTwoThree.cfoo%   r   r   c                      dS )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              X 	Z   Z    [    \  r   r   c                   |    e Zd Zd Zd Zed             Zej        d             Zed             Z	e
d             ZdS )	EasyAsAbcc                     d | _         d S N_barr
   s    r   __init__zEasyAsAbc.__init__2   s    			r   c                     dS )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
    yr   c                     || _         d S r'   r(   r   s     r   r   zEasyAsAbc.bar<   s    			r   c                     dS )NClass Method CFOOr	   r   s    r   r   zEasyAsAbc.cfoo@   s    ""r   c                      dS )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          % % %   X 	Z  Z # # [# $ $ \$ $ $r   r%   c                  T   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            n# 1 swxY w Y   t                      } d | _        t          j        |           }t          |          t          |           u sJ t          |j                  t          u sJ |                    d          dk    sJ |                                dk    sJ |                                dk    sJ |                                d	k    sJ d S )
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   9[!!44449Yy0000		 	"	" = =h(<===yD111[@@@@y$///9<<<<<= = = = = = = = = = = = = = =
 {{H!>HL	(##I	??d8nn,,,,	,....==q    >>33333>>22222==??3333333s   A(CCCc                      G d dt                     } t          j        |           }|| usJ t          |          t          |           u sJ  G fdd|                       }|                                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 |
                                d
t          |          z   k    sJ dS )z-
    Test using locally scoped ABC class
    c                   4    e Zd Zej        d             Zd ZdS ) test_abc_local.<locals>.LocalABCc                     d S r'   r	   r
   s    r   r   z$test_abc_local.<locals>.LocalABC.foob   s    Dr   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                     dS )NTrue!r	   r
   s    r   r   z test_abc_local.<locals>.Real.fooq   s    7r   c                 N    dt          |                                           z   S )NMy )superrL   )r   Real	__class__s    r   rL   z test_abc_local.<locals>.Real.bazt   s$    5t,,002222r   )r   r   r   r   rL   __classcell__)rV   rU   s   @r   rU   rO   p   sM        	 	 		3 	3 	3 	3 	3 	3 	3 	3 	3 	3r   rU   rQ   zFailed to raise type errorFNz.RealrS   )r   r<   r=   rB   r   print	TypeErrorr   r   
isinstancerL   rK   )rM   labcrealelabc2pikrU   s         @r   test_abc_localr`   ]   s       3    9XDx::h''''
3 3 3 3 3 3 3t 3 3 3 466D88::    
 	*+++     D$$&&>**JE3T#YY'''''d3ii,,,,,99D        c5!!!!!#t$$$$$#x(((((7799S		)))))))s   
B 
B3.B3c                     t          j        ddi           }  G d d          } G d d          }|                     |           t          ||           rJ t          ||           sJ t	          j        | ||f          }t	          j        |          \  }}}t          |          t          |           k    sJ t          ||          rJ t          ||          sJ dS )z7
    Test calling metaclass and cache registration
    LocalMetaABCr	   c                       e Zd ZdS )-test_meta_local_no_cache.<locals>.ClassyClassNr   r   r   r	   r   r   ClassyClassrd      s        r   rf   c                       e Zd ZdS )-test_meta_local_no_cache.<locals>.KlassyClassNre   r	   r   r   KlassyClassrh      s        
dr   ri   N)r   ABCMetaregister
issubclassr<   dumpsloadsrB   )rb   rf   ri   reslmabccckcs          r   test_meta_local_no_cachers      s#    ;~r266L               +&&&+|44444k<00000
*lK=
>
>CJsOOME2r;;$|,,,,,,"e$$$$$b%       r   __main__)__doc__r<   r   r   r>   typesr   settingsr   r%   rE   r`   rs   r   r	   r   r   <module>rx      s%     



             i     #   <$ $ $ $ $ $ $ $.4 4 4*/* /* /*b! ! !0 zN r   