
    OfE                    R   d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ  G d d          Z G d	 d
ej	                  Z
 G d dej	                  Z G d de          Z G d de          Z G d deej	                  Z G d dej	                  Z G d dee          Z G d d          Z G d deej	                  Z G d deej	                  Z G d de          Z G d d ej	                  Z G d! d"e          Z G d# d$e          Z G d% d&ej	                  Z G d' d(e          Z G d) d*ej	                  Z G d+ d,ej	                  Z G d- d.ej	                  Z G d/ d0ej	                  Z G d1 d2ej	                  Z G d3 d4ej	                  Z G d5 d6eee          Z  G d7 d8ej	                  Z! G d9 d:e!          Z" G d; d<ej	                  Z# G d= d>ej	                  Z$ G d? d@ej	                  Z% G dA dBej	                  Z& G dC dDej	                  Z' G dE dFe'e          Z( G dG dHej	                  Z) G dI dJe)e          Z* G dK dLej	                  Z+ G dM dNe+ee          Z, G dO dP          Z- G dQ dR          Z.dS )Sz@Test the new API for making and checking interface declarations
    N)MissingSomeAttrs)OptimizationTestMixin)SubclassableMixin)!NameAndModuleComparisonTestsMixinc                       e Zd Z	 ddZdS )_Py3ClassAdviceTc                 "   dd l }|                    d          5 }|                                 	 t          |||           |r|                     d           n# t
          $ r Y d d d            dS w xY w	 d d d            d S # 1 swxY w Y   d S )Nr   T)recordzDidn't raise TypeErrorF)warningscatch_warningsresetwarningsexecfail	TypeError)selfcodeglobslocsfails_under_py3kr   _s          X/var/www/html/env/lib/python3.11/site-packages/zope/interface/tests/test_declarations.py_run_generated_codez#_Py3ClassAdvice._run_generated_code   s    	$$D$11 
	Q""$$$8T5$''' $ 8II6777	    
	 
	 
	 
	 
	 
	 
	 
	

 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s4   BAB
A3$B2A33BBBN)T)__name__
__module____qualname__r        r   r   r      s-         37     r   r   c                        e Zd Zd Zd Zd ZdS )
NamedTestsc                     ddl m}  |d           G d d                      }|                     |j        d           d S )Nr   namedfooc                       e Zd ZdS )"NamedTests.test_class.<locals>.FooNr   r   r   r   r   r   Foor%   5           Dr   r'   zope.interface.declarationsr"   assertEqual__component_name__)r   r"   r'   s      r   
test_classzNamedTests.test_class2   sz    555555	u	 	 	 	 	 	 	 
	 	"E	
 	
 	
 	
 	
r   c                 p    ddl m}  |d          d             }|                     |j        d           d S )Nr   r!   r#   c                     t                      NNotImplementedError)os    r   doFooz'NamedTests.test_function.<locals>.doFoo@   s    %'''r   r)   )r   r"   r4   s      r   test_functionzNamedTests.test_function=   sV    555555	u	( 	( 
	( 	1599999r   c                     ddl m}  G d d          } |            }  |d          |           |                     |j        d           d S )Nr   r!   c                       e Zd ZdS )%NamedTests.test_instance.<locals>.FooNr&   r   r   r   r'   r8   I           Dr   r'   r#   r)   )r   r"   r'   r#   s       r   test_instancezNamedTests.test_instanceF   s    555555	 	 	 	 	 	 	 	ceeeS"E	
 	
 	
 	
 	
r   N)r   r   r   r-   r5   r:   r   r   r   r   r   0   sA        	
 	
 	
: : :

 

 

 

 

r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )EmptyDeclarationTestsc                 "    ddl m}  |            S Nr   )Declarationr*   r?   r   r?   s     r   	_getEmptyzEmptyDeclarationTests._getEmptyW   s     ;;;;;;{}}r   c                 t    |                                  }|                     t          |          g            d S r0   )rB   r+   listr   decls     r   test___iter___emptyz)EmptyDeclarationTests.test___iter___empty[   s3    ~~dR(((((r   c                     ddl m} |                                 }|                     t	          |                                          |g           d S Nr   	Interface)zope.interface.interfacerK   rB   r+   rD   	flattenedr   rK   rF   s      r   test_flattened_emptyz*EmptyDeclarationTests.test_flattened_empty_   sS    666666~~dnn..//)=====r   c                 f    ddl m} |                                 }|                     ||           d S rI   )rL   rK   rB   assertNotInrN   s      r   test___contains___emptyz-EmptyDeclarationTests.test___contains___emptyd   s?    666666~~D)))))r   c                     ddl m} |                                 }|                     |                    |                     |                     |                    |d                     d S )Nr   rJ   Tstrict)rL   rK   rB   
assertTrueextendsrN   s      r   test_extends_emptyz(EmptyDeclarationTests.test_extends_emptyi   si    666666~~Y//000Yt<<=====r   c                     |                                  }t          |                                          }|                     |g            d S r0   )rB   rD   
interfacesr+   )r   rF   
iface_lists      r   test_interfaces_emptyz+EmptyDeclarationTests.test_interfaces_emptyo   sD    ~~$//++,,
R(((((r   c                 t    ddl m} |                                 }|                     |j        ||f           d S rI   )rL   rK   rB   r+   __sro__rN   s      r   test___sro___z#EmptyDeclarationTests.test___sro___t   sF    666666~~i'9:::::r   c                 r    ddl m} |                                 }|                     |j        |f           d S rI   )rL   rK   rB   r+   __iro__rN   s      r   test___iro___z#EmptyDeclarationTests.test___iro___y   sC    666666~~	|44444r   c                    |                                  }|                     |                    d                     |                     |                    dd          d           |                     |j                   d S )Nattrabcdef)rB   assertIsNonegetr+   assertFalse_v_attrsrE   s     r   test_getzEmptyDeclarationTests.test_get~   ss    ~~$((6**+++%//777 	'''''r   c                     |                                  }t                      |_        |                    |           |                     |j                   d S r0   )rB   objectrj   changedri   rE   s     r    test_changed_w_existing__v_attrsz6EmptyDeclarationTests.test_changed_w_existing__v_attrs   sJ    ~~T'''''r   N)r   r   r   rB   rG   rO   rR   rX   r\   r_   rb   rk   ro   r   r   r   r<   r<   S   s          ) ) )> > >
* * *
> > >) ) )
; ; ;
5 5 5
( ( (( ( ( ( (r   r<   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )DeclarationTestsc                     ddl m} |S r>   r@   rA   s     r   _getTargetClassz DeclarationTests._getTargetClass       ;;;;;;r   c                 6     |                                  |i |S r0   rs   r   argskws      r   _makeOnezDeclarationTests._makeOne   #    %t##%%t2r222r   c                 ~    |                                  }|                     t          |j                  g            d S r0   )rz   r+   rD   	__bases__rE   s     r   test_ctor_no_basesz#DeclarationTests.test_ctor_no_bases   s5    }}dn--r22222r   c                     ddl m}  |d          }|                     |          }|                     t	          |j                  |g           d S Nr   InterfaceClassIFoo)rL   r   rz   r+   rD   r}   r   r   r   rF   s       r   test_ctor_w_interface_in_basesz/DeclarationTests.test_ctor_w_interface_in_bases   s\    ;;;;;;~f%%}}T""dn--v66666r   c                     ddl m}  |            }|                     |          }|                     t	          |j                  |g           d S Nr   
Implements)r*   r   rz   r+   rD   r}   )r   r   implrF   s       r   test_ctor_w_implements_in_basesz0DeclarationTests.test_ctor_w_implements_in_bases   sX    ::::::z||}}T""dn--v66666r   c                     |                                  }|                    |           |                     |j                   d S r0   )rz   rn   rg   rj   rE   s     r   !test_changed_wo_existing__v_attrsz2DeclarationTests.test_changed_wo_existing__v_attrs   s=    }}T$-(((((r   c                 Z    |                                  }|                     ||           d S r0   )rz   rQ   rE   s     r   test___contains__w_selfz(DeclarationTests.test___contains__w_self   s+    }}t$$$$$r   c                 |    ddl m}  |d          }|                                 }|                     ||           d S r   )rL   r   rz   rQ   r   s       r   "test___contains__w_unrelated_ifacez3DeclarationTests.test___contains__w_unrelated_iface   sL    ;;;;;;~f%%}}t$$$$$r   c                 ~    ddl m}  |d          }|                     |          }|                     ||           d S r   )rL   r   rz   assertInr   s       r   !test___contains__w_base_interfacez2DeclarationTests.test___contains__w_base_interface   sN    ;;;;;;~f%%}}T""dD!!!!!r   c                     ddl m}  |d          }|                     |          }|                     t	          |          |g           d S r   rL   r   rz   r+   rD   r   s       r   test___iter___single_basez*DeclarationTests.test___iter___single_base   sX    ;;;;;;~f%%}}T""ddV,,,,,r   c                     ddl m}  |d          } |d          }|                     ||          }|                     t	          |          ||g           d S Nr   r   r   IBarr   r   r   r   r   rF   s        r   test___iter___multiple_basesz-DeclarationTests.test___iter___multiple_bases   sk    ;;;;;;~f%%~f%%}}T4((ddD\22222r   c                     ddl m}  |d          } |d|f          }|                     |          }|                     t	          |          |g           d S r   r   r   s        r   test___iter___inheritancez*DeclarationTests.test___iter___inheritance   sk    ;;;;;;~f%%~ftg..}}T""ddV,,,,,r   c                     ddl m}  |d          } |d          }|                     |||f          }|                     t	          |          ||g           d S r   r   r   s        r   'test___iter___w_nested_sequence_overlapz8DeclarationTests.test___iter___w_nested_sequence_overlap   so    ;;;;;;~f%%~f%%}}TD$<00ddD\22222r   c                     ddl m} ddl m}  |d          }|                     |          }|                     t          |                                          ||g           d S )Nr   rJ   r   r   rL   rK   r   rz   r+   rD   rM   )r   rK   r   r   rF   s        r   test_flattened_single_basez+DeclarationTests.test_flattened_single_base   sy    666666;;;;;;~f%%}}T""dnn..//$	1BCCCCCr   c                     ddl m} ddl m}  |d          } |d          }|                     ||          }|                     t          |                                          |||g           d S Nr   rJ   r   r   r   r   r   rK   r   r   r   rF   s         r   test_flattened_multiple_basesz.DeclarationTests.test_flattened_multiple_bases   s    666666;;;;;;~f%%~f%%}}T4((dnn..//$i1HIIIIIr   c                     ddl m} ddl m}  |d          } |d|f          }|                     |          }|                     t          |                                          |||g           d S r   r   r   s         r   test_flattened_inheritancez+DeclarationTests.test_flattened_inheritance   s    666666;;;;;;~f%%~ftg..}}T""dnn..//$i1HIIIIIr   c                     ddl m} ddl m}  |d          } |d          }|                     |||f          }|                     t          |                                          |||g           d S r   r   r   s         r   (test_flattened_w_nested_sequence_overlapz9DeclarationTests.test_flattened_w_nested_sequence_overlap   s    666666;;;;;;~f%%~f%%
 }}TD$<00dnn..//$i1HIIIIIr   c                 
   ddl m}  |d          } |d          }|                     |          }||z
  }|                     ||                                            |                     t          |          |g           d S r   rL   r   rz   assertIsInstancers   r+   rD   r   r   r   r   beforeafters         r    test___sub___unrelated_interfacez1DeclarationTests.test___sub___unrelated_interface   s    ;;;;;;~f%%~f%%t$$eT%9%9%;%;<<<etf-----r   c                     ddl m}  |d          }|                     |          }||z
  }|                     t	          |          g            d S r   r   )r   r   r   r   r   s        r   test___sub___related_interfacez/DeclarationTests.test___sub___related_interface  s_    ;;;;;;~f%%t$$eb)))))r   c                     ddl m}  |d          } |d|f          }|                     |          }||z
  }|                     t	          |          g            d S r   r   r   s         r   -test___sub___related_interface_by_inheritancez>DeclarationTests.test___sub___related_interface_by_inheritance
  sr    ;;;;;;~f%%~ftg..t$$eb)))))r   c                    ddl m}  |d          } |d          }|                     |          }||z   }|                     ||                                            |                     t          |          ||g           d S r   r   r   s         r    test___add___unrelated_interfacez1DeclarationTests.test___add___unrelated_interface  s    ;;;;;;~f%%~f%%t$$eT%9%9%;%;<<<etTl33333r   c                    ddl m}  |d          } |d          } |d          }|                     ||          }|                     ||          }||z   }|                     t	          |          |||g           d S )Nr   r   r   r   IBazr   )r   r   r   r   r   r   otherr   s           r   test___add___related_interfacez/DeclarationTests.test___add___related_interface  s    ;;;;;;~f%%~f%%~f%%tT**dD))etT4&899999r   c                    ddl m} ddl m} ddlm} ddlm}  |d          } |d|f          } ||j        j        d          5  | 	                    |          }||z   }d d d            n# 1 swxY w Y   | 
                    |j        |||f           | 
                    |j        ||f           | 
                    t          |          ||g           d S )	Nr   rJ   ror   	C3SettingIBaseIDerivedT)zope.interfacerK   r   rL   r   zope.interface.tests.test_ror   C3
STRICT_IROrz   r+   ra   r}   rD   )	r   rK   r   r   r   r   r   baser   s	            r   "test___add___overlapping_interfacez3DeclarationTests.test___add___overlapping_interface%  sY    	-,,,,,%%%%%%;;;;;;::::::w''!>*uh77Yru'.. 	$ 	$==''D8OE	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	5)(DEEE8U*;<<<ex&788888s   A..A25A2c                    ddl m} ddl m} ddl m} ddl m} ddlm}  G d d|          } G d	 d
|          } ||           G d d                      } ||j        j        d          5   ||          |z   }	d d d            n# 1 swxY w Y   | 	                    |	j
        |	|||f           | 	                    |	j        ||f           | 	                    t          |	          ||g           d S )Nr   rJ   implementedByimplementerr   r   c                       e Zd ZdS )PDeclarationTests.test___add___overlapping_interface_implementedBy.<locals>.IBaseNr&   r   r   r   r   r   F  r9   r   r   c                       e Zd ZdS )SDeclarationTests.test___add___overlapping_interface_implementedBy.<locals>.IDerivedNr&   r   r   r   r   r   I  r9   r   r   c                       e Zd ZdS )ODeclarationTests.test___add___overlapping_interface_implementedBy.<locals>.BaseNr&   r   r   r   Baser   L  r(   r   r   T)r   rK   r   r   r   r   r   r   r   r+   r^   r}   rD   )
r   rK   r   r   r   r   r   r   r   r   s
             r   0test___add___overlapping_interface_implementedByzADeclarationTests.test___add___overlapping_interface_implementedBy;  s   
 	-,,,,,000000......%%%%%%::::::	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
U			 	 	 	 	 	 	 
		 Yru'.. 	3 	3!M$''(2E	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	%(KLLL8U*;<<<ex&788888s   /B

BBN)r   r   r   rs   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rq      s         3 3 33 3 37 7 77 7 7) ) )
% % %% % %" " "- - -3 3 3- - -3 3 3D D DJ J JJ J JJ J J. . .* * ** * *4 4 4: : :9 9 9,9 9 9 9 9r   rq   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestImmutableDeclarationc                     ddl m} |S )Nr   )_ImmutableDeclaration)r*   r   )r   r   s     r   rs   z(TestImmutableDeclaration._getTargetClassZ  s    EEEEEE$$r   c                     ddl m} |S )Nr   )_empty)r*   r   )r   r   s     r   rB   z"TestImmutableDeclaration._getEmpty^  s    666666r   c                     dd l }|                    |                    |                                                     }|                     ||                                            d S )Nr   )pickleloadsdumpsrB   assertIs)r   r   copieds      r   test_picklez$TestImmutableDeclaration.test_pickleb  sV    fll4>>+;+;<<==fdnn../////r   c                     |                       |                                             |                                            d S r0   )r   rs   rB   r   s    r   test_singletonz'TestImmutableDeclaration.test_singletong  sF    "D  ""$$NN	
 	
 	
 	
 	
r   c                 `    |                      |                                 j        d           d S )Nr   )r+   rB   r}   r   s    r   test__bases__z&TestImmutableDeclaration.test__bases__m  s+    ))3R88888r   c                 
   |                                  }d|_        |                     |                                  j        d           |                     t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nr   )   )rB   r}   r+   assertRaisesr   )r   emptys     r   test_change__bases__z-TestImmutableDeclaration.test_change__bases__p  s      ))3R888y)) 	# 	#"EO	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   #A88A<?A<c                     |                                  }|j        }|                     i |           d|d<   |                     i |j                   d S )N   r   )rB   
dependentsr+   )r   r   depss      r   test_dependentsz(TestImmutableDeclaration.test_dependentsx  sW      T"""QU-.....r   c                 T    |                                                      d            d S r0   )rB   rn   r   s    r   test_changedz%TestImmutableDeclaration.test_changed  s&      &&&&&r   c                 j   |                      |                                                     |                      |                      |                                                     | d                     |                      |                                                     | d                     d S )NTrT   F)ri   rB   rW   r   s    r   test_extends_always_falsez2TestImmutableDeclaration.test_extends_always_false  s    ))11$77888))11$t1DDEEE))11$u1EEFFFFFr   c                     |                      |                                                     d                     |                     |                                                     dd          d           d S )Nname*   )rg   rB   rh   r+   r   s    r   test_get_always_defaultz0TestImmutableDeclaration.test_get_always_default  sd    $..**..v66777))--fb992>>>>>r   c                    |                                  }|                     |j        i            d|j        d<   |                     |j        i            |                     |                    d                     i x}|_        d|d<   |                     |j        i            |                     |                    d                     d S )Nr   rd   )rB   r+   rj   rg   rh   )r   rF   attrss      r   test_v_attrsz%TestImmutableDeclaration.test_v_attrs  s    ~~+++ "f+++$((6**+++ ""f+++$((6**+++++r   N)r   r   r   rs   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   X  s        % % %  0 0 0

 
 
9 9 9# # #/ / /' ' 'G G G
? ? ?, , , , ,r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestImplementsc                     ddl m} |S r   )r*   r   )r   r   s     r   rs   zTestImplements._getTargetClass      ::::::r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zTestImplements._makeOne  r{   r   c                 >    ddl m}  G d d          } ||          S )Nr   r   c                       e Zd ZdS )+TestImplements._makeOneToCompare.<locals>.ANr&   r   r   r   Ar    r9   r   r  r*   r   )r   r   r  s      r   _makeOneToComparez TestImplements._makeOneToCompare  sN    ======	 	 	 	 	 	 	 	 }Qr   c                     |                                  }|                     |j        d            |                     |j        d           |                     |j        d           |                     t          |j                  g            d S )Nr   ?)rz   r+   inheritdeclaredr   rD   r}   r   r   s     r   r~   z!TestImplements.test_ctor_no_bases  s}    }}t,,,+++,,,dn--r22222r   c                     |                                  }d|_        |                     t          |          d           d S )NTestingzclassImplements(Testing))rz   r   r+   reprr  s     r   test___repr__zTestImplements.test___repr__  s9    }}!d%?@@@@@r   c                     ddl m} |                                 }|                     |                                |df           d S )Nr   r   r0   )r*   r   rz   r+   
__reduce__)r   r   r   s      r   test___reduce__zTestImplements.test___reduce__  sL    ======}}**]G,DEEEEEr   c                 <   ddl m} ddlm}  G d d          } G d d          } |d          }|                      ||           ||                     |                     t           ||                    t           ||                               |                      ||          d k                |                     d  ||          k               |                      ||           ||          k                |                      ||          |k               |                      ||           ||          k               |                      ||          |k               |                      ||          |k               d S )	Nr   r   r   c                       e Zd ZdS )#TestImplements.test_sort.<locals>.ANr&   r   r   r   r  r    r9   r   r  c                       e Zd ZdS )#TestImplements.test_sort.<locals>.BNr&   r   r   r   Br    r9   r   r  r   )r*   r   rL   r   r+   hashrV   )r   r   r   r  r  r   s         r   	test_sortzTestImplements.test_sort  s   ======;;;;;;	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 ~f%%q))==+;+;<<<mmA..//mmA6F6F1G1GHHHa((4/000==###	
 	
 	
 	a((==+;+;;<<<a((4/000a((MM!,<,<<===a((D0111a((D011111r   c                 d   ddl m}  G d d          } G d d          } G d d          } ||          } ||          } ||          }|                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               d S )	Nr   r   c                   &    e Zd Zd Zd Zd Zd ZdS )1TestImplements.test_proxy_equality.<locals>.Proxyc                     || _         d S r0   _wrapped)r   wrappeds     r   __init__z:TestImplements.test_proxy_equality.<locals>.Proxy.__init__  s     'r   c                     t                      r0   r1   r   r   s     r   __getattr__z=TestImplements.test_proxy_equality.<locals>.Proxy.__getattr__      )+++r   c                     | j         |k    S r0   r!  r   r   s     r   __eq__z8TestImplements.test_proxy_equality.<locals>.Proxy.__eq__      }--r   c                     | j         |k    S r0   r!  r*  s     r   __ne__z8TestImplements.test_proxy_equality.<locals>.Proxy.__ne__  r,  r   N)r   r   r   r$  r'  r+  r.  r   r   r   Proxyr    sP        ( ( (, , ,. . .. . . . .r   r/  c                       e Zd ZdS )-TestImplements.test_proxy_equality.<locals>.ANr&   r   r   r   r  r1    r9   r   r  c                       e Zd ZdS )-TestImplements.test_proxy_equality.<locals>.BNr&   r   r   r   r  r3    r9   r   r  )r*   r   rV   ri   )r   r   r/  r  r  implementedByAimplementedByBproxys           r   test_proxy_equalityz"TestImplements.test_proxy_equality  s   ======	. 	. 	. 	. 	. 	. 	. 	.	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 'q))&q))n%% 	n,	
 	
 	
 	.8999.8999/000%/000.011150111/000%/00000r   c                 p   |                                  }|                     |j                   |                     d|j                   d|_        |                     d|j                   |                    d            |                     |j                   |                     d|j                   d S )N_super_cacher   )rz   rg   r9  rQ   __dict__r   rn   r  s     r    test_changed_deletes_super_cachez/TestImplements.test_changed_deletes_super_cache  s    }}$+,,,777ndm444T$+,,,77777r   c                 ,   |                                  }|                     |j                   |                     d|j                   |                    d            |                     |j                   |                     d|j                   d S )Nr9  )rz   rg   r9  rQ   r:  rn   r  s     r   %test_changed_does_not_add_super_cachez4TestImplements.test_changed_does_not_add_super_cache  s    }}$+,,,777T$+,,,77777r   N)r   r   r   rs   rz   r  r~   r  r  r  r7  r;  r=  r   r   r   r   r     s          3 3 3     3 3 3A A A
F F F
2 2 20)1 )1 )1V
8 
8 
88 8 8 8 8r   r   c                        e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z fdZ fdZ fdZ fdZ fdZ fdZ xZS )Test_implementedByFallbackc                     ddl m} |S )Nr   )implementedByFallback)r*   rA  )r   rA  s     r   rs   z*Test_implementedByFallback._getTargetClass  s    EEEEEE$$r   c                 6     |                                  |i |S r0   rv   rw   s      r   _callFUTz#Test_implementedByFallback._callFUT   r{   r   c                      G d d          } |            }d |_         |                     t          |                     |                    g            d S )Nc                       e Zd ZdZdS )]Test_implementedByFallback.test_dictless_wo_existing_Implements_wo_registrations.<locals>.Foo__implemented__Nr   r   r   	__slots__r   r   r   r'   rF  $          ,IIIr   r'   )rH  r+   rD   rC  r   r'   r#   s      r   5test_dictless_wo_existing_Implements_wo_registrationszPTest_implementedByFallback.test_dictless_wo_existing_Implements_wo_registrations#  sm    	- 	- 	- 	- 	- 	- 	- 	-cee"dmmC0011266666r   c                 v     G d d          } |            }|                      t          | j        |           d S )Nc                   8    e Zd Zd Zd Z eee          Zd ZdS )hTest_implementedByFallback.test_dictless_wo_existing_Implements_cant_assign___implemented__.<locals>.Fooc                     t                      r0   r1   r   s    r   	_get_implzrTest_implementedByFallback.test_dictless_wo_existing_Implements_cant_assign___implemented__.<locals>.Foo._get_impl-  r(  r   c                     t           r0   )r   )r   vals     r   	_set_implzrTest_implementedByFallback.test_dictless_wo_existing_Implements_cant_assign___implemented__.<locals>.Foo._set_impl0  s    r   c                     t                      r0   r1   r   s    r   __call__zqTest_implementedByFallback.test_dictless_wo_existing_Implements_cant_assign___implemented__.<locals>.Foo.__call__5  s    )+++r   N)r   r   r   rR  rU  propertyrH  rW  r   r   r   r'   rP  ,  sT        , , ,      'hy)<<O, , , , ,r   r'   r   r   rC  rL  s      r   @test_dictless_wo_existing_Implements_cant_assign___implemented__z[Test_implementedByFallback.test_dictless_wo_existing_Implements_cant_assign___implemented__*  sW    	, 	, 	, 	, 	, 	, 	, 	, cee)T]C88888r   c                    ddl m}  G d d          } |            }d |_        t                      }t	          |d          5 }|||<   |                     |                     |          |u            d d d            d S # 1 swxY w Y   d S )Nr   declarationsc                       e Zd ZdZdS )\Test_implementedByFallback.test_dictless_wo_existing_Implements_w_registrations.<locals>.FoorG  NrI  r   r   r   r'   r_  ?  rK  r   r'   #BuiltinImplementationSpecifications)r   r]  rH  rm   _MonkeyDictrV   rC  )r   r]  r'   r#   regspecss         r   4test_dictless_wo_existing_Implements_w_registrationszOTest_implementedByFallback.test_dictless_wo_existing_Implements_w_registrations<  s    //////	- 	- 	- 	- 	- 	- 	- 	- cee"hh>@ @ 	7CHE#JOODMM#..#5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   0B  BBc                     ddl m}  |            } G d d          } |            }||_        |                     |                     |          |u            d S )Nr   r   c                       e Zd ZdZdS )KTest_implementedByFallback.test_dictless_w_existing_Implements.<locals>.FoorG  NrI  r   r   r   r'   rg  N  rK  r   r'   )r*   r   rH  rV   rC  )r   r   r   r'   r#   s        r   #test_dictless_w_existing_Implementsz>Test_implementedByFallback.test_dictless_w_existing_ImplementsJ  s    ::::::z||	- 	- 	- 	- 	- 	- 	- 	- cee"c**d233333r   c                     ddl m}  G d d          } |            } |d          }|f|_        |                     t	          |                     |                    |g           d S )Nr   r   c                       e Zd ZdZdS )OTest_implementedByFallback.test_dictless_w_existing_not_Implements.<locals>.FoorG  NrI  r   r   r   r'   rk  X  rK  r   r'   r   )rL   r   rH  r+   rD   rC  )r   r   r'   r#   r   s        r   'test_dictless_w_existing_not_ImplementszBTest_implementedByFallback.test_dictless_w_existing_not_ImplementsU  s    ;;;;;;	- 	- 	- 	- 	- 	- 	- 	- cee~f%%#gdmmC0011D6:::::r   c                     ddl m}  |             G fdd          }|                     |                     |          u            d S )Nr   r   c                       e Zd Z ZdS )JTest_implementedByFallback.test_w_existing_attr_as_Implements.<locals>.FooNr   r   r   rH  r   s   r   r'   ro  d          "OOOr   r'   r*   r   rV   rC  r   r   r'   r   s      @r   "test_w_existing_attr_as_Implementsz=Test_implementedByFallback.test_w_existing_attr_as_Implements`  }    ::::::z||	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	c**d233333r   c                    ddl m} ddlm} t	          |d          5 }|                     t          |                     t                              g            |                     t          |                     t                              g            |                     t          |                     t                              g            t          t          t          fD ]L}||         }| 
                    ||           |                     t          |          d|j        d           M	 d d d            d S # 1 swxY w Y   d S )Nr   r\  r   r`  classImplements())r   r]  r*   r   ra  r+   rD   rC  tupledictr   r  r   )r   r]  r   rc  typspecs         r   test_builtins_added_to_cachez7Test_implementedByFallback.test_builtins_added_to_cachei  s   //////::::::>@ @ 
	4CHT$--"6"677<<<T$--"5"566;;;T$--"5"566;;;tT* 4 4Sz%%dJ777  d$'LLL"34 4 4 44
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4s   DD>>EEc                    ddl m} t                      t                      t                      }}}t          |d          5 }||t          <   ||t
          <   ||t          <   |                     |                     t                    |u            |                     |                     t
                    |u            |                     |                     t                    |u            d d d            d S # 1 swxY w Y   d S )Nr   r\  r`  )	r   r]  rm   ra  rz  rD   r{  rV   rC  )r   r]  t_specl_specd_specrc  s         r   test_builtins_w_existing_cachez9Test_implementedByFallback.test_builtins_w_existing_cachex  s*   //////!'688VXX>@ @ 	;CH!E%L E$K E$KOODMM%00F:;;;OODMM$//69:::OODMM$//69:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   B,C::C>C>c                      G d d          }|                      t          |                     |                    g            d S )Nc                       e Zd ZdS )ITest_implementedByFallback.test_oldstyle_class_no_assertions.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   r+   rD   rC  r   r'   s     r   !test_oldstyle_class_no_assertionsz<Test_implementedByFallback.test_oldstyle_class_no_assertions  \    	 	 	 	 	 	 	 	 	dmmC0011266666r   c                      G d d          }|                      t          |                     |                    g            d S )Nc                       e Zd ZdS ):Test_implementedByFallback.test_no_assertions.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   r  r  s     r   test_no_assertionsz-Test_implementedByFallback.test_no_assertions  r  r   c                 v     G d d          } |            }|                      t          | j        |           d S )Nc                       e Zd ZdZdS )HTest_implementedByFallback.test_w_None_no_bases_not_factory.<locals>.FooNrp  r   r   r   r'   r            "OOOr   r'   rY  rL  s      r    test_w_None_no_bases_not_factoryz;Test_implementedByFallback.test_w_None_no_bases_not_factory  sW    	# 	# 	# 	# 	# 	# 	# 	# cee)T]C88888r   c                    ddl m}  G d d          } |            }d|_        |                     |          }|                     |j        d           |                     |j        |           |                     |j        |           |                     |j        |           | 	                    d|j
                   d S )Nr   )objectSpecificationDescriptorc                       e Zd ZdZd ZdS )FTest_implementedByFallback.test_w_None_no_bases_w_factory.<locals>.FooNc                     t                      r0   r1   r   s    r   rW  zOTest_implementedByFallback.test_w_None_no_bases_w_factory.<locals>.Foo.__call__  r(  r   )r   r   r   rH  rW  r   r   r   r'   r    s(        "O, , , , ,r   r'   r#   z*zope.interface.tests.test_declarations.foo__provides__)r*   r  r   rC  r+   r   r  rH  __providedBy__rQ   r:  )r   r  r'   r#   r}  s        r   test_w_None_no_bases_w_factoryz9Test_implementedByFallback.test_w_None_no_bases_w_factory  s    MMMMMM	, 	, 	, 	, 	, 	, 	, 	, cee}}S!!E	G 	G 	GdlC(((c)4000 =	
 	
 	
 	66666r   c                    ddl m}  G d d          }|                     |          }|                     |j        d           |                     |j        |           |                     |j        |           |                     |j	        |           |                     |j
        |           |                     |j
        |j	                   d S )Nr   ClassProvidesc                       e Zd ZdZdS )DTest_implementedByFallback.test_w_None_no_bases_w_class.<locals>.FooNrp  r   r   r   r'   r    r  r   r'   z*zope.interface.tests.test_declarations.Foo)r*   r  rC  r+   r   r   r  rH  r   r  r  )r   r  r'   r}  s       r   test_w_None_no_bases_w_classz7Test_implementedByFallback.test_w_None_no_bases_w_class  s   ======	# 	# 	# 	# 	# 	# 	# 	# }}S!!E	G 	G 	GdlC(((c)4000	
 	
 	
 	m	
 	
 	
 	c0	
 	
 	
 	
 	
r   c                     ddl m}  |             G fdd          }|                     |                     |          u            d S )Nr   r   c                       e Zd Z ZdS )BTest_implementedByFallback.test_w_existing_Implements.<locals>.FooNrp  rq  s   r   r'   r    rr  r   r'   rs  rt  s      @r   test_w_existing_Implementsz5Test_implementedByFallback.test_w_existing_Implements  rv  r   c                    ddl m} ddlm}  G d d|          } G d d|          } ||           G d d	                      } ||           G d
 d|                      }|                     t          |                     |                    ||g           t          ||          }|                     t          |                     |                    |g           d S )Nr   rJ   r   c                       e Zd ZdS )STest_implementedByFallback.test_super_when_base_implements_interface.<locals>.IBaseNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )VTest_implementedByFallback.test_super_when_base_implements_interface.<locals>.IDerivedNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )RTest_implementedByFallback.test_super_when_base_implements_interface.<locals>.BaseNr&   r   r   r   r   r    r(   r   r   c                       e Zd ZdS )UTest_implementedByFallback.test_super_when_base_implements_interface.<locals>.DerivedNr&   r   r   r   Derivedr    r(   r   r  r   rK   r*   r   r+   rD   rC  super	r   rK   r   r   r   r   r  sup	__class__s	           r   )test_super_when_base_implements_interfacezDTest_implementedByFallback.test_super_when_base_implements_interface  sm   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
U			 	 	 	 	 	 	 
		 
X			 	 	 	 	d 	 	 
		 	dmmG4455%7HIIIGW%%dmmC0011E7;;;;;r   c                 
   ddl m} ddlm}  G d d|          } G d d|          } ||           G d d	                      } G d
 d|          } G d d|          } ||           G d d||                      }|                     t          |                     |                    ||g           t          ||          }	|                     t          |                     |	                    |g           d S )Nr   rJ   r   c                       e Zd ZdS )[Test_implementedByFallback.test_super_when_base_implements_interface_diamond.<locals>.IBaseNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )^Test_implementedByFallback.test_super_when_base_implements_interface_diamond.<locals>.IDerivedNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )ZTest_implementedByFallback.test_super_when_base_implements_interface_diamond.<locals>.BaseNr&   r   r   r   r   r    r(   r   r   c                       e Zd ZdS )\Test_implementedByFallback.test_super_when_base_implements_interface_diamond.<locals>.Child1Nr&   r   r   r   Child1r    r9   r   r  c                       e Zd ZdS )\Test_implementedByFallback.test_super_when_base_implements_interface_diamond.<locals>.Child2Nr&   r   r   r   Child2r    r9   r   r  c                       e Zd ZdS )]Test_implementedByFallback.test_super_when_base_implements_interface_diamond.<locals>.DerivedNr&   r   r   r   r  r    r(   r   r  r  )r   rK   r   r   r   r   r  r  r  r  r  s             r   1test_super_when_base_implements_interface_diamondzLTest_implementedByFallback.test_super_when_base_implements_interface_diamond  s   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
U			 	 	 	 	 	 	 
			 	 	 	 	T 	 	 		 	 	 	 	T 	 	 	 
X			 	 	 	 	ff 	 	 
		 	dmmG4455%7HIIIGW%%dmmC0011E7;;;;;r   c                    ddl m} ddlm}  G d d|          } G d d|          } G d d	          } G d
 d|          } ||           G d d|                      } ||           G d d||                      }|                     |j        ||||t          f           |                     t          |                     |                    ||g           t          ||          }	|                     |	          }
|                     t          |
          |g           | 
                    |
j                   d S )Nr   rJ   r   c                       e Zd ZdS )]Test_implementedByFallback.test_super_when_parent_implements_interface_diamond.<locals>.IBaseNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )`Test_implementedByFallback.test_super_when_parent_implements_interface_diamond.<locals>.IDerivedNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )\Test_implementedByFallback.test_super_when_parent_implements_interface_diamond.<locals>.BaseNr&   r   r   r   r   r    r9   r   r   c                       e Zd ZdS )^Test_implementedByFallback.test_super_when_parent_implements_interface_diamond.<locals>.Child1Nr&   r   r   r   r  r    r9   r   r  c                       e Zd ZdS )^Test_implementedByFallback.test_super_when_parent_implements_interface_diamond.<locals>.Child2Nr&   r   r   r   r  r    r(   r   r  c                       e Zd ZdS )_Test_implementedByFallback.test_super_when_parent_implements_interface_diamond.<locals>.DerivedNr&   r   r   r   r  r    r(   r   r  )r   rK   r*   r   r+   __mro__rm   rD   rC  r  rg   _dependents)r   rK   r   r   r   r   r  r  r  r  futr  s              r   3test_super_when_parent_implements_interface_diamondzNTest_implementedByFallback.test_super_when_parent_implements_interface_diamond  s   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 		 	 	 	 	 	 	 		 	 	 	 	T 	 	 	 
U			 	 	 	 	T 	 	 
		 
X			 	 	 	 	ff 	 	 
		 	OgvvtVD	
 	
 	
 	dmmG4455%7HIIIGW%%mmC  cUG,,,#/*****r   c                    ddl m} ddlm}  G d d|          } G d d|          } G d d	          } ||           G d
 d|                      }|                     t          |                     |                    |g           t          ||          }|                     t          |                     |                    g            d S )Nr   rJ   r   c                       e Zd ZdS )YTest_implementedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.IBaseNr&   r   r   r   r   r  &  r9   r   r   c                       e Zd ZdS )\Test_implementedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.IDerivedNr&   r   r   r   r   r  )  r9   r   r   c                       e Zd ZdS )XTest_implementedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.BaseNr&   r   r   r   r   r  ,  r9   r   r   c                       e Zd ZdS )[Test_implementedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.DerivedNr&   r   r   r   r  r  /  r(   r   r  r  r  s	           r   /test_super_when_base_doesnt_implement_interfacezJTest_implementedByFallback.test_super_when_base_doesnt_implement_interface"  sQ   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 		 	 	 	 	 	 	 	 
X			 	 	 	 	d 	 	 
		 	dmmG4455zBBBGW%%dmmC0011266666r   c                    ddl m} ddlm}  G d d|          } G d d|          } ||           G d d	                      }|                     t          |                     |                    |g           t          ||          }|                     t          |                     |                    g            d S )
Nr   rJ   r   c                       e Zd ZdS )HTest_implementedByFallback.test_super_when_base_is_object.<locals>.IBaseNr&   r   r   r   r   r  <  r9   r   r   c                       e Zd ZdS )KTest_implementedByFallback.test_super_when_base_is_object.<locals>.IDerivedNr&   r   r   r   r   r  ?  r9   r   r   c                       e Zd ZdS )JTest_implementedByFallback.test_super_when_base_is_object.<locals>.DerivedNr&   r   r   r   r  r  B  r(   r   r  r  )r   rK   r   r   r   r  r  r  s          r   test_super_when_base_is_objectz9Test_implementedByFallback.test_super_when_base_is_object8  s'   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
X			 	 	 	 	 	 	 
		 	dmmG4455zBBBGW%%dmmC0011266666r   c                    ddl m} ddlm}  G d d|          } G d d|          } G d d	|          } G d
 d|          } G d d|          } ||           G d d                      } ||           G d d|                      }	 ||           G d d|                      }
 |||           G d d|	|
                      }|}t	          ||          }t	          |	|          }t	          |
|          }|                     t          |                     |                    |||||g           |                     t          |                     |                    |||g           |                     t          |                     |                    ||g           |                     t          |                     |                    |g           d S )Nr   rJ   r   c                       e Zd ZdS )RTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.IBaseNr&   r   r   r   r   r  O  r9   r   r   c                       e Zd ZdS )PTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.IM1Nr&   r   r   r   IM1r  R  r9   r   r  c                       e Zd ZdS )PTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.IM2Nr&   r   r   r   IM2r  U  r9   r   r  c                       e Zd ZdS )UTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.IDerivedNr&   r   r   r   r   r  X  r9   r   r   c                       e Zd ZdS )WTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.IUnrelatedNr&   r   r   r   
IUnrelatedr  [  r9   r   r  c                       e Zd ZdS )QTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.BaseNr&   r   r   r   r   r  ^  r(   r   r   c                       e Zd ZdS )OTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.M1Nr&   r   r   r   M1r  b  r(   r   r  c                       e Zd ZdS )OTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.M2Nr&   r   r   r   M2r  f  r(   r   r  c                       e Zd ZdS )TTest_implementedByFallback.test_super_multi_level_multi_inheritance.<locals>.DerivedNr&   r   r   r   r  r   j  r(   r   r  r   rK   r*   r   r  r+   rD   rC  r   rK   r   r   r  r  r   r  r   r  r  r  dsdsm1sm2r  s                   r   (test_super_multi_level_multi_inheritancezCTest_implementedByFallback.test_super_multi_level_multi_inheritanceK  s   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	) 	 	 		 	 	 	 	) 	 	 		 	 	 	 	u 	 	 		 	 	 	 	 	 	 	 
U			 	 	 	 	 	 	 
		 
S			 	 	 	 	 	 	 
		 
S			 	 	 	 	 	 	 
		 
Xz	*	*	 	 	 	 	b" 	 	 
+	*	 7G$$B  B  dmmA..//"JUC@	B 	B 	BdmmB//00uc*	, 	, 	,dmmC0011u	' 	' 	'dmmC0011	" 	" 	" 	" 	"r   )r   r   r   rs   _getFallbackClassrC  rM  rZ  rd  rh  rl  ru  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__r  s   @r   r?  r?    s       % % %
 (3 3 37 7 79 9 9$7 7 7	4 	4 	4	; 	; 	;4 4 44 4 4
; 
; 
;7 7 77 7 79 9 97 7 7*
 
 
*4 4 4< < < < <,< < < < <8+ + + + +B7 7 7 7 7,7 7 7 7 7&/" /" /" /" /" /" /" /" /"r   r?  c                       e Zd Zd ZdS )Test_implementedByc                     ddl m} |S )Nr   r   r  )r   r   s     r   rs   z"Test_implementedBy._getTargetClass      ======r   Nr   r   r   rs   r   r   r   r  r  }  s#            r   r  c                   2    e Zd ZdZd Zde dz   dfdZd ZdS )_ImplementsTestMixinTc                     t           r0   r1   )r   clsifaces      r   rC  z_ImplementsTestMixin._callFUT  s    !!r   Nz.Foo	not givenc                 >   ddl m} ddlm}  |d          }|                     ||          }|                     ||           |j        }	||                     |	|           |                     |	j        |           |dk    r|n|}|                     |	j	        |           |                     |j        |	           | j
        rV|                     |j        |           |                     |j        |           |                     |j        |j                   ||fS )Nr   r  r   r   r  )r*   r  rL   r   rC  r   rH  r+   r   r  FUT_SETS_PROVIDED_BYr   r  r  )
r   r'   	orig_spec	spec_namer  r  r   r   returnedr}  s
             r   _check_implementerz'_ImplementsTestMixin._check_implementer  sC    	>=====;;;;;;~f%%==d++h$$$" MM$	***"	$ 	$ 	$ K//##WdlG,,,c)4000$ 	C!!#"4mDDD!!#"2MBBBS-s/ABBBDyr   c                 J     G d d          }|                      |           d S )Nc                       e Zd ZdS ),_ImplementsTestMixin.test_class.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   )r  r  s     r   r-   z_ImplementsTestMixin.test_class  sF    	 	 	 	 	 	 	 	 	$$$$$r   )r   r   r   r  rC  r  r-   r   r   r   r  r    s\        " " "
 &*%-%6#.   6% % % % %r   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )Test_classImplementsOnlyFc                 *    ddl m}  |||           |S )Nr   )classImplementsOnly)r*   r"  )r   r  r  r"  s       r   rC  z!Test_classImplementsOnly._callFUT  s,    CCCCCCC'''
r   c                 p   ddl m} ddlm}  |d          } |d          } ||          |f_         G fdd          }|_        |                     ||           |                     |j        u            | 	                    j        d            | 	                    j        |f           d S )Nr   r   r   r   r   c                       e Zd Z ZdS )@Test_classImplementsOnly.test_w_existing_Implements.<locals>.FooNrp  rq  s   r   r'   r%    rr  r   r'   )
r*   r   rL   r   r  r  rC  rV   rH  r+   r   r   r   r   r   r'   r   s         @r   r  z3Test_classImplementsOnly.test_w_existing_Implements  s    ::::::;;;;;;~f%%~f%%z$	# 	# 	# 	# 	# 	# 	# 	# 	# 	# c4   +t3444t,,,00000r   c                     ddl m} ddlm}  |d          } ||           G fdd          }|                     |dd            d S )	Nr   r   r   r   c                       e Zd Z ZdS )0Test_classImplementsOnly.test_class.<locals>.FooNrp  )old_specs   r   r'   r)    s        &OOOr   r'   r
  r  )r*   r   rL   r   r  )r   r   r   r   r'   r*  s        @r   r-   z#Test_classImplementsOnly.test_class  s    ::::::;;;;;;~f%%:d##	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	XsDAAAAAr   c                     |                      t          dt          fi           d           \  }} G d d|          }|                     ||           |                     |                    |                     d S )Nr'   r+  c                       e Zd ZdS )RTest_classImplementsOnly.test_redundant_with_super_still_implements.<locals>.ChildNr&   r   r   r   Childr.    r9   r   r/  )r  typerm   rC  rV   r   )r   r   r   r/  s       r   *test_redundant_with_super_still_implementszCTest_classImplementsOnly.test_redundant_with_super_still_implements  s    --	2&& . 
 
e
	 	 	 	 	D 	 	 	 	eU###++E2233333r   N)r   r   r   r  rC  r  r-   r1  r   r   r   r   r     sY           
1 1 1$	B 	B 	B
4 
4 
4 
4 
4r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	Test_classImplementsc                 T    ddl m}  |||          }|                     |           |S )Nr   classImplements)r*   r6  rg   )r   r  r  r6  results        r   rC  zTest_classImplements._callFUT  sE    ?????? 
 
 	&!!!
r   c                    |                      |          \  }} G d d|          }|                     ||          }|                     d|j                   |                     d|j                   |                     d|j                   |j        }|                     |j        d           |                     |j        |           | 	                    |
                     |                                 d S )Nc                       e Zd ZdS )ATest_classImplements.__check_implementer_redundant.<locals>.ChildNr&   r   r   r   r/  r:    r9   r   r/  rH  r  r  r   )r  rC  r   r:  rQ   rH  r+   r  r  rV   
providedBy)r   r   r   r/  r  r}  s         r   __check_implementer_redundantz2Test_classImplements.__check_implementer_redundant  s    --d33e	 	 	 	 	D 	 	 	 ==..'):;;;)8+<===nh&7888$+++u---((1122222r   c                 J     G d d          }|                      |           d S )Nc                       e Zd ZdS )UTest_classImplements.test_redundant_implementer_empty_class_declarations.<locals>.FooNr&   r   r   r   r'   r?    r9   r   r'   )2_Test_classImplements__check_implementer_redundantr  s     r   3test_redundant_implementer_empty_class_declarationszHTest_classImplements.test_redundant_implementer_empty_class_declarations  sF    	 	 	 	 	 	 	 	 	**3/////r   c                    ddl m} ddl m} ddl m} ddlm}  G d d          } ||j        j        d          5  |                     ||           | 	                    t           ||                    |g            G d	 d
|          }|                     ||           | 	                    t           ||                    |g           d d d            d S # 1 swxY w Y   d S )Nr   rJ   r   r   r   c                       e Zd ZdS )FTest_classImplements.test_redundant_implementer_Interface.<locals>.FooNr&   r   r   r   r'   rD    r9   r   r'   Fc                       e Zd ZdS )FTest_classImplements.test_redundant_implementer_Interface.<locals>.BazNr&   r   r   r   BazrF            r   rG  )r   rK   r   r   r   r   r   r   rC  r+   rD   )r   rK   r   r   r   r'   rG  s          r   $test_redundant_implementer_Interfacez9Test_classImplements.test_redundant_implementer_Interface  s   ,,,,,,000000%%%%%%::::::	 	 	 	 	 	 	 	 Yru'// 	D 	DMM#y)))T--"4"455	{CCC    c    MM#y)))T--"4"455	{CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   BCC"%C"c                 
    ||fS r0   r   r   applied_firstapplied_seconds      r   _order_for_twoz#Test_classImplements._order_for_two  s    ~..r   c                    ddl m} ddlm}  |d          } |d          } ||          |f_         G fdd          }|_        |                     ||           |                     |j                   | 	                    j        |           | 	                    j        | 
                    ||                     d S )Nr   r   r   r   r   c                       e Zd Z ZdS )<Test_classImplements.test_w_existing_Implements.<locals>.FooNrp  rq  s   r   r'   rQ  $  rr  r   r'   )r*   r   rL   r   r  r  rC  r   rH  r+   rN  r&  s         @r   r  z/Test_classImplements.test_w_existing_Implements  s   ::::::;;;;;;~f%%~f%%z$	# 	# 	# 	# 	# 	# 	# 	# 	# 	# c4   c)4000s+++,,T488	: 	: 	: 	: 	:r   c                   	
 ddl m} ddlm}  |d          } |d          } |d|f          }|                    d|          
|f
_         G 
fdd	          } G 
fd
d          }|                    d|          	|f	_         G 	fdd||          }|	_        |                     ||           |                     |j	        	           | 
                    	j        |           | 
                    	j        |                     ||                     | 
                    	j        |                     ||          
fz              d S )Nr   r   r   IRootISecondRootIExtendsRootRootc                       e Zd Z ZdS )FTest_classImplements.test_w_existing_Implements_w_bases.<locals>.Root1Nrp  	impl_roots   r   Root1rX  9          'OOOr   r[  c                       e Zd Z ZdS )FTest_classImplements.test_w_existing_Implements_w_bases.<locals>.Root2Nrp  rY  s   r   Root2r^  <  r\  r   r_  ExtendsRoot1c                       e Zd Z ZdS )LTest_classImplements.test_w_existing_Implements_w_bases.<locals>.ExtendsRootNrp  )impl_extends_roots   r   ExtendsRootrb  B  s        /OOOr   rd  )r*   r   rL   r   r"   r  r  rC  r   rH  r+   rN  r}   )r   r   r   rS  rT  rU  r[  r_  rd  rc  rZ  s            @@r   "test_w_existing_Implements_w_basesz7Test_classImplements.test_w_existing_Implements_w_bases/  s   ::::::;;;;;;w''$n]33%~nuh??$$VU33	#X		( 	( 	( 	( 	( 	( 	( 	( 	( 	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ',,^\JJ&2_"	0 	0 	0 	0 	0 	0 	0% 	0 	0 	0 %0!k;///k13DEEE*2K@@@*3,,\;HH	J 	J 	J'k::i\I	
 	
 	
 	
 	
r   N)
r   r   r   rC  r@  rA  rI  rN  r  re  r   r   r   r3  r3    s          3 3 3&0 0 0D D D&/ / /: : :&!
 !
 !
 !
 !
r   r3  c                       e Zd Zd Zd ZdS )Test_classImplementsFirstc                 T    ddl m}  |||          }|                     |           |S )Nr   )classImplementsFirst)r*   ri  rg   )r   r  r  ri  r7  s        r   rC  z"Test_classImplementsFirst._callFUTU  sF    DDDDDD%%
 
 	&!!!
r   c                 
    ||fS r0   r   rK  s      r   rN  z(Test_classImplementsFirst._order_for_two]  s    ..r   N)r   r   r   rC  rN  r   r   r   rg  rg  S  s2          / / / / /r   rg  c                       e Zd Zd Zd ZdS )Test__implements_advicec                     ddl m}  ||i |S )Nr   )_implements_advice)r*   rn  )r   rx   ry   rn  s       r   rC  z Test__implements_advice._callFUTc  *    BBBBBB!!4.2...r   c                 L   ddl m} ddl m ddlm}  |d           G fdd          }|                     |           |                     d|j                   |                     |j	        |           | 
                    t          |j	                  g           d S )	Nr   r   r5  r   r   c                       e Zd Z ffZdS )@Test__implements_advice.test_no_existing_implements.<locals>.FooN)r   r   r   __implements_advice_data__)r   r6  s   r   r'   rr  m  s        +/'?)C&&&r   r'   rs  )r*   r   r6  rL   r   rC  rQ   r:  r   rH  r+   rD   )r   r   r   r'   r   r6  s       @@r   test_no_existing_implementsz3Test__implements_advice.test_no_existing_implementsg  s   ::::::??????;;;;;;~f%%	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	c5s|DDD	
 	
 	
 	$%%v	
 	
 	
 	
 	
r   N)r   r   r   rC  rt  r   r   r   rl  rl  a  s2        / / /
 
 
 
 
r   rl  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Test_implementerc                     ddl m} |S )Nr   r   )r*   r   )r   r   s     r   rs   z Test_implementer._getTargetClass|  rt   r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zTest_implementer._makeOne  r{   r   c                 ,     | j         | } ||          S r0   rz   )r   r  ifaces	decorators       r   rC  zTest_implementer._callFUT  s    !DM6*	y~~r   c                     ddl m}  |d          }|                     |          }|                     t          |t                                 d S r   )rL   r   rz   r   r   rm   )r   r   r   r|  s       r    test_nonclass_cannot_assign_attrz1Test_implementer.test_nonclass_cannot_assign_attr  sV    ;;;;;;~f%%MM$''	)Y99999r   c                 r   ddl m}  |d          } G d d          } |            }|                     |          } ||          }|                     ||u            |j        }|                     |j        d           |                     |j                   | 	                    |j        |           d S )Nr   r   r   c                       e Zd ZdS );Test_implementer.test_nonclass_can_assign_attr.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   z(zope.interface.tests.test_declarations.?)
rL   r   rz   rV   rH  r+   r   rg   r  r   )r   r   r   r'   r#   r|  r  r}  s           r   test_nonclass_can_assign_attrz.Test_implementer.test_nonclass_can_assign_attr  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 ceeMM$''	9S>>C((("ME	
 	
 	
 	$,(((c)400000r   c                 |   dd l }ddlm}  |d          }t          |                                          }t          d          D ]%} G d d          }|                     ||           &|                                 t          |                                          }d}|                     |||z              d S )Nr   r   r   il  c                       e Zd ZdS )HTest_implementer.test_does_not_leak_on_unique_classes.<locals>.TestClassNr&   r   r   r   	TestClassr    rH  r   r  )	gcrL   r   lenget_objectsrangerC  collectassertLessEqual)	r   r  r   r   begin_countr   r  	end_countfudge_factors	            r   $test_does_not_leak_on_unique_classesz5Test_implementer.test_does_not_leak_on_unique_classes  s     				;;;;;;~f%%"..**++t 	+ 	+A        MM)T****


(())	 Yl(BCCCCCr   N)	r   r   r   rs   rz   rC  r~  r  r  r   r   r   rv  rv  z  ss          3 3 3  : : :1 1 1$D D D D Dr   rv  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )Test_implementer_onlyc                     ddl m} |S )Nr   )implementer_only)r*   r  )r   r  s     r   rs   z%Test_implementer_only._getTargetClass  s    @@@@@@r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zTest_implementer_only._makeOne  r{   r   c                 B    |                      |          } ||          S r0   rz  )r   r  r  r|  s       r   rC  zTest_implementer_only._callFUT  s!    MM%((	y~~r   c                     ddl m}  |d          }|                     |          }d }|                     t          ||           d S )Nr   r   r   c                      t                      r0   r1   r   r   r   	_functionz6Test_implementer_only.test_function.<locals>._function      %'''r   )rL   r   rz   r   
ValueError)r   r   r   r|  r  s        r   r5   z#Test_implementer_only.test_function  sc    ;;;;;;~f%%MM$''		( 	( 	( 	*i;;;;;r   c                     ddl m}  |d          }|                     |          } G d d          }|                     t          ||j                   d S )Nr   r   r   c                       e Zd Zd ZdS ).Test_implementer_only.test_method.<locals>.Barc                     t                      r0   r1   r   s    r   _methodz6Test_implementer_only.test_method.<locals>.Bar._method  r(  r   N)r   r   r   r  r   r   r   Barr    s#        , , , , ,r   r  )rL   r   rz   r   r  r  )r   r   r   r|  r  s        r   test_methodz!Test_implementer_only.test_method  s~    ;;;;;;~f%%MM$''		, 	, 	, 	, 	, 	, 	, 	, 	*i=====r   N)r   r   r   rs   rz   rC  r5   r  r   r   r   r  r    s_             3 3 3  < < <	> 	> 	> 	> 	>r   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ProvidesClassTestsc                     ddl m} |S Nr   ProvidesClassr*   r  r   r  s     r   rs   z"ProvidesClassTests._getTargetClass  r  r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zProvidesClassTests._makeOne  r{   r   c                     ddl m}  |d          } G d d          }|                     ||          }|                     t	          |          |g           d S )Nr   r   r   c                       e Zd ZdS )?ProvidesClassTests.test_simple_class_one_interface.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   r   r   r   r   r'   r}  s        r   test_simple_class_one_interfacez2ProvidesClassTests.test_simple_class_one_interface  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 }}S$''ddV,,,,,r   c                    ddl m} ddlm}  |d          } G d d          }|                     ||          }|                                \  }}|                     ||           |                     |||f           d S )Nr   Providesr   r   c                       e Zd ZdS )/ProvidesClassTests.test___reduce__.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   )r*   r  rL   r   rz   r  r   r+   )r   r  r   r   r'   r}  klassrx   s           r   r  z"ProvidesClassTests.test___reduce__  s    888888;;;;;;~f%%	 	 	 	 	 	 	 	 }}S$''oo''teX&&&T{+++++r   c                     ddl m}  |d          } G d d          }|                     ||          }||_        |                     |j        |           d S )Nr   r   r   c                       e Zd ZdS )2ProvidesClassTests.test___get___class.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   rL   r   rz   r  r   r  s        r   test___get___classz%ProvidesClassTests.test___get___class  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 }}S$''c&-----r   c                     ddl m}  |d          } G d d          |                     |          }|_        fd}|                     t
          |           d S )Nr   r   r   c                       e Zd ZdS )5ProvidesClassTests.test___get___instance.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   c                  &                 } | j         S r0   )r  )r#   r'   s    r   _testz7ProvidesClassTests.test___get___instance.<locals>._test  s    #%%C##r   )rL   r   rz   r  r   AttributeError)r   r   r   r}  r  r'   s        @r   test___get___instancez(ProvidesClassTests.test___get___instance  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 }}S$''	$ 	$ 	$ 	$ 	$ 	.%00000r   N)	r   r   r   rs   rz   r  r  r  r  r   r   r   r  r    sn          3 3 3- - -, , ,	. 	. 	.1 1 1 1 1r   r  c                   $     e Zd Z fdZd Z xZS )ProvidesClassStrictTestsc                 j    t                                                       G fdd          }|S )Nc                       e Zd Z fdZdS )@ProvidesClassStrictTests._getTargetClass.<locals>.StrictProvidesc                 4                         | |d          S NT)	base_mrosrU   _do_calculate_ro)r   r  r  s     r   r  zQProvidesClassStrictTests._getTargetClass.<locals>.StrictProvides._do_calculate_ro$  '    $55Id 6   r   Nr   r   r   r  r  s   r   StrictProvidesr  #  .              r   r  r  rs   )r   r  r  r  s     @r   rs   z(ProvidesClassStrictTests._getTargetClass   sU    //11	 	 	 	 	 	 	] 	 	 	 r   c           	         ddl m} ddl m} ddl m}  G d d|          } ||           G d d                      }|                     ||          }|                     |j        | ||          | |t                    |f           d S )	Nr   rJ   r   r   c                       e Zd ZdS )MProvidesClassStrictTests.test_overlapping_interfaces_corrected.<locals>.IBaseNr&   r   r   r   r   r  2  r9   r   r   c                       e Zd ZdS )LProvidesClassStrictTests.test_overlapping_interfaces_corrected.<locals>.BaseNr&   r   r   r   r   r  5  r(   r   r   )r   rK   r   r   rz   r+   r^   rm   )r   rK   r   r   r   r   r}  s          r   %test_overlapping_interfaces_correctedz>ProvidesClassStrictTests.test_overlapping_interfaces_corrected+  s    	-,,,,,000000......	 	 	 	 	I 	 	 	 
U			 	 	 	 	 	 	 
		 }}T5))M$M&!!(
 	 	 	 	 	r   r   r   r   rs   r  r	  r
  s   @r   r  r    sG        	 	 	 	 	      r   r  c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestProvidesClassReprc                     ddl m} |S r  r  r  s     r   rs   z%TestProvidesClassRepr._getTargetClassE  r  r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zTestProvidesClassRepr._makeOneI  r{   r   c                 F   ddl m}  |d          }|j        dk    sJ |j        t          k    sJ t	          |          dt           dk    sJ  |d          }|                     t          |           ||          }|                     t	          |          d           d S )Nr   r   r   z<InterfaceClass z.IFoo>r   z3directlyProvides(TestProvidesClassRepr, IFoo, IBar))rL   r   r   r   r  rz   r0  r+   )r   r   r   r   insts        r   test__repr__z"TestProvidesClassRepr.test__repr__L  s    ;;;;;;~f%%}&&&&(****Dzz@@@@@@@@~f%%}}T$ZZt44JJA	
 	
 	
 	
 	
r   c                 f    ddl m} |j        }|                     t	          |          d           d S )Nr   dummyzIdirectlyProvides(sys.modules['zope.interface.tests.dummy'], IDummyModule))zope.interface.testsr  r  r+   r  )r   r  providess      r   'test__repr__module_provides_typical_usez=TestProvidesClassRepr.test__repr__module_provides_typical_use[  sN     	/.....%NN	
 	
 	
 	
 	
r   c                     dd l }ddlm} |j        }t	          |j        dz             D ]J}|                     |j                  5  |                    ||           d d d            n# 1 swxY w Y   Kd S )Nr   r  r   )	r   r  r  r  r  HIGHEST_PROTOCOLr   PicklingErrorr   )r   r   r  r  protos        r   test__repr__module_after_picklez5TestProvidesClassRepr.test__repr__module_after_pickleg  s    ......%62Q677 	. 	.E""6#788 . .Xu---. . . . . . . . . . . . . . .	. 	.s   A((A,	/A,	c                    dd l }ddlm} ddlm} ddlm} ddlm}  |d          } |d          }|j        }|`| 	                    t          |d|            |||           |j        }	|                     t          |	          d	            |||           |j        }	|                     t          |	          d
           |j        t                   }
t          |
d          rJ  ||
||           | 	                    t           |
d           |                     |
j        |	           |                     t          |	          d           d S )Nr   alsoProvidesdirectlyProvidesr   r  r   r   r  zAdirectlyProvides(sys.modules['zope.interface.tests.dummy'], IFoo)zGdirectlyProvides(sys.modules['zope.interface.tests.dummy'], IFoo, IBar)zfdirectlyProvides(('zope.interface.tests.dummy', 'zope.interface.tests.test_declarations'), IFoo, IBar))sysr*   r  r  rL   r   r  r  r  
addCleanupsetattrr+   r  modulesr   hasattrdelattrr   )r   r  r  r  r   r  r   r   orig_providesr  	my_modules              r   #test__repr__directlyProvides_modulez9TestProvidesClassRepr.test__repr__directlyProvides_moduleq  s   


<<<<<<@@@@@@;;;;;;......~f%%~f%%*FFF%%%%NNO	
 	
 	

 	UD!!!%NN	
 	
 	
 K)	9n55555D$///N;;;i,h777NN	
 	
 	
 	
 	
r   c                     ddl m} ddlm}  |d          }|                     ||          }|xj        dz  c_        |xj        dz  c_        |                     t          |          d           d S )Nr   )
ModuleTyper   r   )zsome.module)zanother.modulez9directlyProvides(('some.module', 'another.module'), IFoo))r*   r  rL   r   rz   _v_module_namesr+   r  )r   r  r   r   r  s        r   )test__repr__module_provides_cached_sharedz?TestProvidesClassRepr.test__repr__module_provides_cached_shared  s    ::::::;;;;;;~f%%}}Z.. 00 33JJG	
 	
 	
 	
 	
r   c                     ddl m}  |dd          } |dd          } |d          }|                     t          |           |||          }|                     t          |          d           d S )	Nr   r   r   mod1r   mod2r   z>directlyProvides(TestProvidesClassRepr, IFoo, IBaz, mod2.IFoo)rL   r   rz   r0  r+   r  r   r   r   IFoo2r   r  s         r   test__repr__duplicate_namesz1TestProvidesClassRepr.test__repr__duplicate_names  s    ;;;;;;~f888v&999~f%%}}T$ZZtU;;JJL	
 	
 	
 	
 	
r   c                     ddl m} ddl m}  G d d|          } G d d          } |t          |                     }|                     |||          }|                     t          |          d           d S )	Nr   rJ   r   c                       e Zd ZdZdS )KTestProvidesClassRepr.test__repr__implementedBy_in_interfaces.<locals>.IFooDoes nothingNr   r   r   __doc__r   r   r   r   r            NNNr   r   c                       e Zd ZdZdS )JTestProvidesClassRepr.test__repr__implementedBy_in_interfaces.<locals>.Barr  Nr	  r   r   r   r  r    r  r   r  zCdirectlyProvides(Bar, IFoo, classImplements(TestProvidesClassRepr)))r   rK   r   r0  rz   r+   r  )r   rK   r   r   r  r   r  s          r   'test__repr__implementedBy_in_interfacesz=TestProvidesClassRepr.test__repr__implementedBy_in_interfaces  s    ,,,,,,000000	 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 }T$ZZ((}}S$--JJ6	
 	
 	
 	
 	
r   c                     |                      t          |                     }|                     t          |          d           d S )Nz'directlyProvides(TestProvidesClassRepr)rz   r0  r+   r  r   r  s     r   test__repr__empty_interfacesz2TestProvidesClassRepr.test__repr__empty_interfaces  sG    }}T$ZZ((JJ5	
 	
 	
 	
 	
r   c                       fd G fdd          }                       |                      }                     t          |          d           d S )Nc                  2                          d           d S )NzShould not call str)r   r   s   r   str___dont_call_mezGTestProvidesClassRepr.test__repr__non_class.<locals>.str___dont_call_me  s    II+,,,,,r   c                       e Zd ZdZ Zd ZdS );TestProvidesClassRepr.test__repr__non_class.<locals>.Objectr   c                     dS )Nz<Object>r   r   s    r   __repr__zDTestProvidesClassRepr.test__repr__non_class.<locals>.Object.__repr__  s    !zr   N)r   r   r   r}   __str__r  )r  s   r   Objectr    s.        I(G" " " " "r   r  zdirectlyProvides(<Object>))rz   r+   r  )r   r  r  r  s   `  @r   test__repr__non_classz+TestProvidesClassRepr.test__repr__non_class  s    	- 	- 	- 	- 	-	" 	" 	" 	" 	" 	" 	" 	" 	" 	" }}VVXX&&JJ(	
 	
 	
 	
 	
r   c                     ddl m} ddl m} ddlm}  |d          } ||           G d d                      } | |                      }|                     t          |          d           d S )	Nr   r   r;  r   r   c                       e Zd ZdS )DTestProvidesClassRepr.test__repr__providedBy_from_class.<locals>.FooNr&   r   r   r   r'   r     r(   r   r'   classImplements(Foo, IFoo))r*   r   r;  rL   r   r+   r  )r   r   r;  r   r   r'   r  s          r   !test__repr__providedBy_from_classz7TestProvidesClassRepr.test__repr__providedBy_from_class  s    ;;;;;;::::::;;;;;;~f%%	T			 	 	 	 	 	 	 
		 z##%%  JJ(	
 	
 	
 	
 	
r   c                 &   ddl m} ddl m} ddl m} ddlm}  |d          } |d          } ||           G d d	                      } |            } |||            ||          }	|                     t          |	          d
           d S )Nr   r  r   r  r   r   r   c                       e Zd ZdS )FTestProvidesClassRepr.test__repr__providedBy_alsoProvides.<locals>.FooNr&   r   r   r   r'   r%    r(   r   r'   z7directlyProvides(Foo, IBar, classImplements(Foo, IFoo)))r*   r  r   r;  rL   r   r+   r  )
r   r  r   r;  r   r   r   r'   r#   r  s
             r   #test__repr__providedBy_alsoProvidesz9TestProvidesClassRepr.test__repr__providedBy_alsoProvides  s    <<<<<<;;;;;;::::::;;;;;;~f%%~f%%	T			 	 	 	 	 	 	 
		 ceeS$z#JJE	
 	
 	
 	
 	
r   N)r   r   r   rs   rz   r  r  r  r  r  r  r  r  r  r"  r&  r   r   r   r  r  C  s          3 3 3
 
 


 

 

. . ..
 .
 .
`
 
 


 

 


 
 
(
 
 

 
 
$
 
 
 
 
 
 
 
r   r  c                        e Zd Zd Zd Zd ZdS )Test_Providesc                     ddl m}  ||i |S )Nr   r  )r*   r  )r   rx   ry   r  s       r   rC  zTest_Provides._callFUT  s)    888888x$$$$r   c                 V   ddl m} ddlm}  |d          }i } G d d          }t	          ||          5  |                     ||          }d d d            n# 1 swxY w Y   |                     t          |          |g           |                     |||f         |u            d S )Nr   r\  r   r   c                       e Zd ZdS ).Test_Provides.test_no_cached_spec.<locals>.FooNr&   r   r   r   r'   r,    r9   r   r'   InstanceDeclarations)	r   r]  rL   r   _MonkeyrC  r+   rD   rV   )r   r]  r   r   cacher'   r}  s          r   test_no_cached_specz!Test_Provides.test_no_cached_spec  s#   //////;;;;;;~f%%	 	 	 	 	 	 	 	 \>>> 	, 	,==d++D	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,ddV,,,sDk*d233333s   AA"Ac                 "   ddl m} ddlm}  |d          }t	                      } G d d          }||f|i}t          ||          5  |                     ||          }d d d            n# 1 swxY w Y   |                     ||u            d S )Nr   r\  r   r   c                       e Zd ZdS )-Test_Provides.test_w_cached_spec.<locals>.FooNr&   r   r   r   r'   r4  '  r9   r   r'   r-  )r   r]  rL   r   rm   r/  rC  rV   )r   r]  r   r   priorr'   r0  r}  s           r   test_w_cached_specz Test_Provides.test_w_cached_spec!  s   //////;;;;;;~f%%	 	 	 	 	 	 	 	 te$\>>> 	, 	,==d++D	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,&&&&&s   
A--A14A1N)r   r   r   rC  r1  r6  r   r   r   r(  r(    sA        % % %4 4 4' ' ' ' 'r   r(  c                   &    e Zd Zd Zd Zd Zd ZdS )Test_directlyProvidesc                     ddl m}  ||i |S )Nr   r  )r*   r  )r   rx   ry   r  s       r   rC  zTest_directlyProvides._callFUT2  *    @@@@@@,,,,r   c                    ddl m} ddlm}  |d          } G d d          } |            }|                     ||           |                     |j        |           |                     t          |j                  |g           d S )Nr   r  r   r   c                       e Zd ZdS )7Test_directlyProvides.test_w_normal_object.<locals>.FooNr&   r   r   r   r'   r=  ;  r9   r   r'   	r*   r  rL   r   rC  r   r  r+   rD   r   r  r   r   r'   objs         r   test_w_normal_objectz*Test_directlyProvides.test_w_normal_object6      ======;;;;;;~f%%	 	 	 	 	 	 	 	 ceec4   m	
 	
 	
 	!""TF	
 	
 	
 	
 	
r   c                    ddl m} ddlm}  |d          } G d d          }|                     ||           |                     |j        |           |                     t          |j                  |g           d S )Nr   r  r   r   c                       e Zd ZdS )/Test_directlyProvides.test_w_class.<locals>.FooNr&   r   r   r   r'   rE  L  r9   r   r'   )	r*   r  rL   r   rC  r   r  r+   rD   r   r  r   r   r'   s        r   test_w_classz"Test_directlyProvides.test_w_classG  s    ======;;;;;;~f%%	 	 	 	 	 	 	 	 	c4   m	
 	
 	
 	!""TF	
 	
 	
 	
 	
r   c                 $   ddl m} ddlm}  |d          }i  G fdd          } |            }|                     ||           |                     d         |           |                     t          d                   |g           d S )Nr   r  r   r   c                        e Zd Zd Z fdZdS ):Test_directlyProvides.test_w_classless_object.<locals>.Fooc                 0    |dk    rd S t          |          Nr  r1   r&  s     r   __getattribute__zKTest_directlyProvides.test_w_classless_object.<locals>.Foo.__getattribute__^  s     ;&&4)$///r   c                     ||<   d S r0   r   )r   r   valuethe_dicts      r   __setattr__zFTest_directlyProvides.test_w_classless_object.<locals>.Foo.__setattr__d  s    !&r   Nr   r   r   rM  rQ  rP  s   r   r'   rJ  ]  s=        0 0 0' ' ' ' ' ' 'r   r'   r  )r*   r  rL   r   rC  r   r+   rD   )r   r  r   r   r'   r@  rP  s         @r   test_w_classless_objectz-Test_directlyProvides.test_w_classless_objectW  s    ======;;;;;;~f%%	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ceec4   h~6FFFh~677$@@@@@r   N)r   r   r   rC  rA  rG  rT  r   r   r   r8  r8  0  sU        - - -
 
 
"
 
 
 A A A A Ar   r8  c                        e Zd Zd Zd Zd ZdS )Test_alsoProvidesc                     ddl m}  ||i |S )Nr   r  )r*   r  )r   rx   ry   r  s       r   rC  zTest_alsoProvides._callFUTo  s)    <<<<<<|T(R(((r   c                    ddl m} ddlm}  |d          } G d d          } |            }|                     ||           |                     |j        |           |                     t          |j                  |g           d S )Nr   r  r   r   c                       e Zd ZdS )8Test_alsoProvides.test_wo_existing_provides.<locals>.FooNr&   r   r   r   r'   rZ  x  r9   r   r'   r>  r?  s         r   test_wo_existing_providesz+Test_alsoProvides.test_wo_existing_providess  rB  r   c                 R   ddl m} ddl m} ddlm}  |d          } |d          } G d d          } |            } |||           |                     ||           |                     |j        |           |                     t          |j                  ||g           d S )	Nr   r  r  r   r   r   c                       e Zd ZdS )7Test_alsoProvides.test_w_existing_provides.<locals>.FooNr&   r   r   r   r'   r^    r9   r   r'   )
r*   r  r  rL   r   rC  r   r  r+   rD   )r   r  r  r   r   r   r'   r@  s           r   test_w_existing_providesz*Test_alsoProvides.test_w_existing_provides  s
   ======@@@@@@;;;;;;~f%%~f%%	 	 	 	 	 	 	 	 ceed###c4   m	
 	
 	
 	!""T4L	
 	
 	
 	
 	
r   N)r   r   r   rC  r[  r_  r   r   r   rV  rV  m  sA        ) ) )
 
 
"
 
 
 
 
r   rV  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )Test_noLongerProvidesc                     ddl m}  ||i |S )Nr   )noLongerProvides)r*   rc  )r   rx   ry   rc  s       r   rC  zTest_noLongerProvides._callFUT  r:  r   c                     ddl m}  |d          } G d d          } |            }|                     ||           |                     t	          |j                  g            d S )Nr   r   r   c                       e Zd ZdS )<Test_noLongerProvides.test_wo_existing_provides.<locals>.FooNr&   r   r   r   r'   rf    r9   r   r'   )rL   r   rC  r+   rD   r  )r   r   r   r'   r@  s        r   r[  z/Test_noLongerProvides.test_wo_existing_provides  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 ceec4   !""B	
 	
 	
 	
 	
r   c                     ddl m} ddlm}  |d          } G d d          } |            } |||           |                     ||           |                     t          |j                  g            d S )Nr   r  r   r   c                       e Zd ZdS )?Test_noLongerProvides.test_w_existing_provides_hit.<locals>.FooNr&   r   r   r   r'   ri    r9   r   r'   r*   r  rL   r   rC  r+   rD   r  )r   r  r   r   r'   r@  s         r   test_w_existing_provides_hitz2Test_noLongerProvides.test_w_existing_provides_hit  s    @@@@@@;;;;;;~f%%	 	 	 	 	 	 	 	 ceed###c4   !""B	
 	
 	
 	
 	
r   c                    ddl m} ddlm}  |d          } |d          } G d d          } |            } |||           |                     ||           |                     t          |j                  |g           d S )Nr   r  r   r   r   c                       e Zd ZdS )@Test_noLongerProvides.test_w_existing_provides_miss.<locals>.FooNr&   r   r   r   r'   rn    r9   r   r'   rj  )r   r  r   r   r   r'   r@  s          r   test_w_existing_provides_missz3Test_noLongerProvides.test_w_existing_provides_miss  s    @@@@@@;;;;;;~f%%~f%%	 	 	 	 	 	 	 	 ceed###c4   !""TF	
 	
 	
 	
 	
r   c                     ddl m} ddlm}  |d          } ||           G d d                      } |            }|                     t
          | j        ||           d S )Nr   r   r   r   c                       e Zd ZdS )DTest_noLongerProvides.test_w_iface_implemented_by_class.<locals>.FooNr&   r   r   r   r'   rr    r(   r   r'   )r*   r   rL   r   r   r  rC  )r   r   r   r   r'   r@  s         r   !test_w_iface_implemented_by_classz7Test_noLongerProvides.test_w_iface_implemented_by_class  s    ;;;;;;;;;;;;~f%%	T			 	 	 	 	 	 	 
		 cee*dmS$?????r   N)r   r   r   rC  r[  rk  ro  rs  r   r   r   ra  ra    sd        - - -
 
 

 
 

 
 
 
@ 
@ 
@ 
@ 
@r   ra  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )ClassProvidesBaseFallbackTestsc                     ddl m} |S Nr   )ClassProvidesBaseFallbackr*   rx  r   rx  s     r   rs   z.ClassProvidesBaseFallbackTests._getTargetClass      IIIIII((r   c                 Z     G d d|                                            } |||          S )Nc                       e Zd Zd ZdS )8ClassProvidesBaseFallbackTests._makeOne.<locals>.Derivedc                 "    || _         || _        d S r0   )_cls_implements)r   kis      r   r$  zAClassProvidesBaseFallbackTests._makeOne.<locals>.Derived.__init__  s    	#$   r   N)r   r   r   r$  r   r   r   r  r~    s#        % % % % %r   r  rv   )r   r  
implementsr  s       r   rz   z'ClassProvidesBaseFallbackTests._makeOne  sL    	% 	% 	% 	% 	%d**,, 	% 	% 	%
 wuj)))r   c                     ddl m}  |d          } G d d          }|                     ||          x}|_        |                     |j        |u            d S )Nr   r   r   c                       e Zd ZdS )GClassProvidesBaseFallbackTests.test_w_same_class_via_class.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   )rL   r   rz   r  rV   )r   r   r   r'   cpbps        r   test_w_same_class_via_classz:ClassProvidesBaseFallbackTests.test_w_same_class_via_class  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 #'--T":"::s(D011111r   c                     ddl m}  |d          } G d d          } |            }|                     ||          |_        |                     |j        |           d S )Nr   r   r   c                       e Zd ZdS )JClassProvidesBaseFallbackTests.test_w_same_class_via_instance.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   r  )r   r   r   r'   r#   s        r   test_w_same_class_via_instancez=ClassProvidesBaseFallbackTests.test_w_same_class_via_instance  s    ;;;;;;~f%%	 	 	 	 	 	 	 	 cee==d33c&-----r   c                 0   ddl m}  |d          } G d d          } G d d|          } |            }|                     ||          |_        |                     t
          t          |d           |                     t
          t          |d           d S )	Nr   r   r   c                       e Zd ZdS )BClassProvidesBaseFallbackTests.test_w_different_class.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   c                       e Zd ZdS )BClassProvidesBaseFallbackTests.test_w_different_class.<locals>.BarNr&   r   r   r   r  r    r9   r   r  r  )rL   r   rz   r  r   r  getattr)r   r   r   r'   r  bars         r   test_w_different_classz5ClassProvidesBaseFallbackTests.test_w_different_class  s    ;;;;;;~f%%	 	 	 	 	 	 	 		 	 	 	 	# 	 	 	 cee==d33.'3GGG.'3GGGGGr   N)r   r   r   rs   rz   r  r  r  r   r   r   ru  ru    sd        ) ) )
	* 	* 	*2 2 2	. 	. 	.H H H H Hr   ru  c                       e Zd Zd Zd ZdS )ClassProvidesBaseTestsc                     ddl m} |S )Nr   )ClassProvidesBase)r*   r  )r   r  s     r   rs   z&ClassProvidesBaseTests._getTargetClass  s    AAAAAA  r   c                     ddl m} |S rw  ry  rz  s     r   r  z(ClassProvidesBaseTests._getFallbackClass  r{  r   N)r   r   r   rs   r  r   r   r   r  r    s2        ! ! !) ) ) ) )r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )ClassProvidesTestsc                     ddl m} |S Nr   r  r*   r  r   r  s     r   rs   z"ClassProvidesTests._getTargetClass"  r  r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zClassProvidesTests._makeOne&  r{   r   c                 v   ddl m} ddlm}  |d          } |d          } ||           G d d                      }|                     |t          |          |          x}|_        |                     |j        |u            |                     t           |            j                  |g           d S )Nr   r   r   r   r   c                       e Zd ZdS )7ClassProvidesTests.test_w_simple_metaclass.<locals>.FooNr&   r   r   r   r'   r  /  r(   r   r'   )
r*   r   rL   r   rz   r0  r  rV   r+   rD   r   r   r   r   r   r'   cps          r   test_w_simple_metaclassz*ClassProvidesTests.test_w_simple_metaclass)  s    ;;;;;;;;;;;;~f%%~f%%	T			 	 	 	 	 	 	 
		 !%c499d C CCS(B.///ccee011D6:::::r   c                 j   ddl m} ddlm}  |d          } |d          } ||           G d d                      }|                     |t          |          |          x}|_        |                     |                                t          |          |t          |          |ff           d S )Nr   r   r   r   r   c                       e Zd ZdS )/ClassProvidesTests.test___reduce__.<locals>.FooNr&   r   r   r   r'   r  =  r(   r   r'   )	r*   r   rL   r   rz   r0  r  r+   r  r  s          r   r  z"ClassProvidesTests.test___reduce__7  s    ;;;;;;;;;;;;~f%%~f%%	T			 	 	 	 	 	 	 
		 !%c499d C CCSr((S$s))T$:;	= 	= 	= 	= 	=r   N)r   r   r   rs   rz   r  r  r   r   r   r  r     sP          3 3 3; ; ;= = = = =r   r  c                   $     e Zd Z fdZd Z xZS )ClassProvidesStrictTestsc                 j    t                                                       G fdd          }|S )Nc                       e Zd Z fdZdS )EClassProvidesStrictTests._getTargetClass.<locals>.StrictClassProvidesc                 4                         | |d          S r  r  )r   r  r  s     r   r  zVClassProvidesStrictTests._getTargetClass.<locals>.StrictClassProvides._do_calculate_roM  r  r   Nr  r  s   r   StrictClassProvidesr  L  r  r   r  r  )r   r  r  r  s     @r   rs   z(ClassProvidesStrictTests._getTargetClassI  sU    //11	 	 	 	 	 	 	- 	 	 	 #"r   c           
      n   ddl m} ddl m} ddl m}  G d d|          } ||           G d dt                                } |d	t
          fi           }|                     |||          }|                     |j        | ||          | |t                     |t
                    |f           d S )
Nr   rJ   r   r   c                       e Zd ZdS )MClassProvidesStrictTests.test_overlapping_interfaces_corrected.<locals>.IBaseNr&   r   r   r   r   r  [  r9   r   r   c                       e Zd ZdS )QClassProvidesStrictTests.test_overlapping_interfaces_corrected.<locals>.metaclassNr&   r   r   r   	metaclassr  ^  r(   r   r  r  )	r   rK   r   r   r0  rm   rz   r+   r^   )r   rK   r   r   r   r  r  r}  s           r   r  z>ClassProvidesStrictTests.test_overlapping_interfaces_correctedT  s5    	-,,,,,000000......	 	 	 	 	I 	 	 	 
U			 	 	 	 	 	 	 
		 iI
 
 }}S)U33M)$$M$M&!!(
 	 	 	 	 	r   r  r
  s   @r   r  r  F  sG        	# 	# 	# 	# 	#      r   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestClassProvidesReprc                     ddl m} |S r  r  r  s     r   rs   z%TestClassProvidesRepr._getTargetClassu  r  r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zTestClassProvidesRepr._makeOney  r{   r   c                     |                      t          |           t                    }|                     t          |          d           d S )Nz'directlyProvides(TestClassProvidesRepr)r  r  s     r   test__repr__emptyz'TestClassProvidesRepr.test__repr__empty|  sI    }}T$ZZ..JJ5	
 	
 	
 	
 	
r   c                     ddl m}  G d d|          }|                     t          |           t          |          }|                     t          |          d           d S )Nr   rJ   c                       e Zd ZdZdS )=TestClassProvidesRepr.test__repr__providing_one.<locals>.IFoor  Nr	  r   r   r   r   r    r  r   r   z-directlyProvides(TestClassProvidesRepr, IFoo))r   rK   rz   r0  r+   r  )r   rK   r   r  s       r   test__repr__providing_onez/TestClassProvidesRepr.test__repr__providing_one  s    ,,,,,,	 	 	 	 	9 	 	 	 }}T$ZZt44JJ;	
 	
 	
 	
 	
r   c                     ddl m}  |dd          } |dd          } |d          }|                     t          |           t          |||          }|                     t          |          d           d S )	Nr   r   r   r  r  r   r   z>directlyProvides(TestClassProvidesRepr, IFoo, IBaz, mod2.IFoo)r  r  s         r   r  z1TestClassProvidesRepr.test__repr__duplicate_names  s    ;;;;;;~f888v&999~f%%}}T$ZZtT5AAJJL	
 	
 	
 	
 	
r   c                     ddl m} ddl m} ddlm}  |d          } ||           G d d                      } ||          }|                     t          |          d           d S )	Nr   r   r   r   r   c                       e Zd ZdS )<TestClassProvidesRepr.test__repr__implementedBy.<locals>.FooNr&   r   r   r   r'   r    r(   r   r'   r!  )r*   r   r   rL   r   r+   r  )r   r   r   r   r   r'   r  s          r   test__repr__implementedByz/TestClassProvidesRepr.test__repr__implementedBy  s    ======;;;;;;;;;;;;~f%%	T			 	 	 	 	 	 	 
		 }S!!JJ(	
 	
 	
 	
 	
r   c                 (   ddl m}  G d d          } | |                      }|                     t          |          dt           d            |            }d|_         ||          }|                     t          |          d           d S )Nr   r   c                       e Zd Zd ZdS )RTestClassProvidesRepr.test__repr__implementedBy_generic_callable.<locals>.Callablec                     | S r0   r   r   s    r   rW  z[TestClassProvidesRepr.test__repr__implementedBy_generic_callable.<locals>.Callable.__call__  s    r   N)r   r   r   rW  r   r   r   Callabler    s#            r   r  rx  z.?)zclassImplements(Callable))r*   r   r+   r  r   )r   r   r  r  cs        r   *test__repr__implementedBy_generic_callablez@TestClassProvidesRepr.test__repr__implementedBy_generic_callable  s    ======	 	 	 	 	 	 	 	 }XXZZ((JJ,x,,,	
 	
 	

 HJJ
}QJJ'	
 	
 	
 	
 	
r   N)
r   r   r   rs   rz   r  r  r  r  r  r   r   r   r  r  s  s}          3 3 3
 
 


 

 



 

 


 
 
 
 
 
 
 
r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )Test_directlyProvidedByc                     ddl m}  ||i |S )Nr   )directlyProvidedBy)r*   r  )r   rx   ry   r  s       r   rC  z Test_directlyProvidedBy._callFUT  ro  r   c                      G d d          } |            }|                      t          |                     |                    g            d S )Nc                       e Zd ZdS )NTest_directlyProvidedBy.test_wo_declarations_in_class_or_instance.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   r  rL  s      r   )test_wo_declarations_in_class_or_instancezATest_directlyProvidedBy.test_wo_declarations_in_class_or_instance  sg    	 	 	 	 	 	 	 	 ceedmmC0011266666r   c                     ddl m} ddlm}  |d          } ||           G d d                      } |            }|                     t          |                     |                    g            d S )Nr   r   r   r   c                       e Zd ZdS )RTest_directlyProvidedBy.test_w_declarations_in_class_but_not_instance.<locals>.FooNr&   r   r   r   r'   r    r(   r   r'   )r*   r   rL   r   r+   rD   rC  )r   r   r   r   r'   r#   s         r   -test_w_declarations_in_class_but_not_instancezETest_directlyProvidedBy.test_w_declarations_in_class_but_not_instance  s    ;;;;;;;;;;;;~f%%	T			 	 	 	 	 	 	 
		 ceedmmC0011266666r   c                     ddl m} ddlm}  |d          } G d d          } |            } |||           |                     t          |                     |                    |g           d S )Nr   r  r   r   c                       e Zd ZdS )RTest_directlyProvidedBy.test_w_declarations_in_instance_but_not_class.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   )r*   r  rL   r   r+   rD   rC  )r   r  r   r   r'   r#   s         r   -test_w_declarations_in_instance_but_not_classzETest_directlyProvidedBy.test_w_declarations_in_instance_but_not_class  s    @@@@@@;;;;;;~f%%	 	 	 	 	 	 	 	 ceed###dmmC0011D6:::::r   c                 ,   ddl m} ddl m} ddlm}  |d          } |d          } ||           G d d                      } |            } |||           |                     t          |                     |                    |g           d S )	Nr   r  r   r   r   r   c                       e Zd ZdS )NTest_directlyProvidedBy.test_w_declarations_in_instance_and_class.<locals>.FooNr&   r   r   r   r'   r    r(   r   r'   )r*   r  r   rL   r   r+   rD   rC  )r   r  r   r   r   r   r'   r#   s           r   )test_w_declarations_in_instance_and_classzATest_directlyProvidedBy.test_w_declarations_in_instance_and_class  s    @@@@@@;;;;;;;;;;;;~f%%~f%%	T			 	 	 	 	 	 	 
		 ceed###dmmC0011D6:::::r   N)r   r   r   rC  r  r  r  r  r   r   r   r  r    s_        / / /7 7 7
7 
7 
7
; 
; 
;; ; ; ; ;r   r  c                        e Zd Zd Zd Zd ZdS )Test_providerc                     ddl m} |S )Nr   )provider)r*   r  )r   r  s     r   rs   zTest_provider._getTargetClass  s    888888r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   zTest_provider._makeOne  r{   r   c                    ddl m} ddlm}  |d          }|                     |           G d d                      }|                     |j        |           |                     t          |j                  |g           d S )Nr   r  r   r   c                       e Zd ZdS )'Test_provider.test_w_class.<locals>.FooNr&   r   r   r   r'   r    r(   r   r'   )	r*   r  rL   r   rz   r   r  r+   rD   rF  s        r   rG  zTest_provider.test_w_class  s    ======;;;;;;~f%%	t			 	 	 	 	 	 	 
		 	m	
 	
 	
 	!""TF	
 	
 	
 	
 	
r   N)r   r   r   rs   rz   rG  r   r   r   r  r    sA          3 3 3
 
 
 
 
r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )Test_moduleProvidesc                     ddl m} ddlm}  |d          }d||d}i }d                    dd	g          }t          |||           |d
         }|                     t          |           d S )Nr   moduleProvidesr   r   zope.interface.tests.foor   r  r   
z
def foo():    moduleProvides(IFoo)r#   )r*   r  rL   r   joinr   r   r   )r   r  r   r   r   r   CODEr#   s           r   test_called_from_functionz-Test_moduleProvides.test_called_from_function  s    >>>>>>;;;;;;~f%%7#14A Ayy&
   	T5$5k)S)))))r   c                     ddl m} ddlm}  |d          }d||d}i }d                    dd	g          }|                     t                    5  t          |||           d d d            d S # 1 swxY w Y   d S )
Nr   r  r   r   r  r  r  zclass Foo(object):r  r*   r  rL   r   r  r   r   r   )r   r  r   r   r   r   r  s          r   test_called_from_classz*Test_moduleProvides.test_called_from_class%  s    >>>>>>;;;;;;~f%%7#14A Ayy &
   y)) 	$ 	$ud###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A00A47A4c                     ddl m} ddlm}  |d          }d||d}d                    dg          }t          ||           |d	         }|                     t          |          |g           d S )
Nr   r  r   r   r  r  r  moduleProvides(IFoo)r  )r*   r  rL   r   r  r   r+   rD   )r   r  r   r   r   r  r}  s          r   "test_called_once_from_module_scopez6Test_moduleProvides.test_called_once_from_module_scope3  s    >>>>>>;;;;;;~f%%7#14A Ayy"
   	T5^$ddV,,,,,r   c                     ddl m} ddlm}  |d          }d||d}d                    ddg          }|                     t                    5  t          ||           d d d            d S # 1 swxY w Y   d S )	Nr   r  r   r   r  r  r  r  r  )r   r  r   r   r   r  s         r   #test_called_twice_from_module_scopez7Test_moduleProvides.test_called_twice_from_module_scope@  s    >>>>>>;;;;;;~f%%7#14A A yy""
   y)) 	 	u	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A--A14A1N)r   r   r   r  r  r  r  r   r   r   r  r    sP        * * *$ $ $- - -    r   r  c                   Z    e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd ZdS )#Test_getObjectSpecificationFallbackc                     ddl m} |S )Nr   )getObjectSpecificationFallback)r*   r  )r   r  s     r   r  z5Test_getObjectSpecificationFallback._getFallbackClassQ  s    NNNNNN--r   c                 6     |                                  |i |S r0   rv   rw   s      r   rC  z,Test_getObjectSpecificationFallback._callFUTX  r{   r   c                     i  G fdd          } |            }|                      |          }|                     t          |          g            d S )Nc                        e Zd Z fdZd ZdS )TTest_getObjectSpecificationFallback.test_wo_existing_provides_classless.<locals>.Fooc                 z    |dk    rt          |          	 |         S # t          $ r t          |          w xY wrL  )r  KeyError)r   r   rP  s     r   rM  zeTest_getObjectSpecificationFallback.test_wo_existing_provides_classless.<locals>.Foo.__getattribute___  sT    ;&&(.../#D>) / / /(.../s     :c                     t                      r0   r1   )r   r   rO  s      r   rQ  z`Test_getObjectSpecificationFallback.test_wo_existing_provides_classless.<locals>.Foo.__setattr__h  r(  r   NrR  rS  s   r   r'   r  ^  s=        / / / / /, , , , ,r   r'   rC  r+   rD   )r   r'   r#   r}  rP  s       @r   #test_wo_existing_provides_classlesszGTest_getObjectSpecificationFallback.test_wo_existing_provides_classless[  sz    	, 	, 	, 	, 	, 	, 	, 	, 	, 	, cee}}S!!dR(((((r   c                     ddl m} ddlm}  |d          }d } |||           |                     |          }|                     ||j                   d S )Nr   r  r   r   c                      t                      r0   r1   r   r   r   r#   zOTest_getObjectSpecificationFallback.test_existing_provides_is_spec.<locals>.foot  r  r   )r*   r  rL   r   rC  r   r  )r   r  r   r   r#   r}  s         r   test_existing_provides_is_speczBTest_getObjectSpecificationFallback.test_existing_provides_is_speco  s    @@@@@@;;;;;;~f%%	( 	( 	( 	d###}}S!!dC,-----r   c                     d }t                      |_        |                     |          }|                     t	          |          g            d S )Nc                      t                      r0   r1   r   r   r   r#   zSTest_getObjectSpecificationFallback.test_existing_provides_is_not_spec.<locals>.foo}  r  r   )rm   r  rC  r+   rD   )r   r#   r}  s      r   "test_existing_provides_is_not_speczFTest_getObjectSpecificationFallback.test_existing_provides_is_not_spec{  sR    	( 	( 	( "88}}S!!dR(((((r   c                     ddl m} ddlm}  |d          } G d d          } |            } |||           |                     |          }|                     t          |          |g           d S )Nr   r  r   r   c                       e Zd ZdS )GTest_getObjectSpecificationFallback.test_existing_provides.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   )r*   r  rL   r   rC  r+   rD   )r   r  r   r   r'   r#   r}  s          r   test_existing_providesz:Test_getObjectSpecificationFallback.test_existing_provides  s    @@@@@@;;;;;;~f%%	 	 	 	 	 	 	 	 ceed###}}S!!ddV,,,,,r   c                     ddl m} ddlm}  |d          } ||           G d d                      } |            }|                     |          }|                     t          |          |g           d S )Nr   r   r   r   c                       e Zd ZdS )WTest_getObjectSpecificationFallback.test_wo_provides_on_class_w_implements.<locals>.FooNr&   r   r   r   r'   r    r(   r   r'   )r*   r   rL   r   rC  r+   rD   r   r   r   r   r'   r#   r}  s          r   &test_wo_provides_on_class_w_implementszJTest_getObjectSpecificationFallback.test_wo_provides_on_class_w_implements  s    ;;;;;;;;;;;;~f%%	T			 	 	 	 	 	 	 
		 cee}}S!!ddV,,,,,r   c                      G d d          } |            }|                      |          }|                     t          |          g            d S )Nc                       e Zd ZdS )XTest_getObjectSpecificationFallback.test_wo_provides_on_class_wo_implements.<locals>.FooNr&   r   r   r   r'   r    r9   r   r'   r	  r   r'   r#   r}  s       r   'test_wo_provides_on_class_wo_implementszKTest_getObjectSpecificationFallback.test_wo_provides_on_class_wo_implements  j    	 	 	 	 	 	 	 	 cee}}S!!dR(((((r   c                 >    t          j        | | j        d           d S )Nr  expected_missingr   test_raisesrC  r   s    r   ,test_catches_only_AttributeError_on_provideszPTest_getObjectSpecificationFallback.test_catches_only_AttributeError_on_provides  s/    $$-.	
 	
 	
 	
 	
 	
r   c                 @    t          j        | | j        dd            d S )Nr  )r"  r  r#  r   s    r   )test_catches_only_AttributeError_on_classzMTest_getObjectSpecificationFallback.test_catches_only_AttributeError_on_class  s4    $M(		
 	
 	
 	
 	
 	
r   c                 Z     G d d          }|                       |                       d S )Nc                   $    e Zd Z ee          ZdS )lTest_getObjectSpecificationFallback.test_raises_AttrError_w_provides_fails_type_check_AttrError.<locals>.FooN)r   r   r   r   r  r  r   r   r   r'   r*    s        ++N;;LLLr   r'   )rC  r  s     r   ;test_raises_AttrError_w_provides_fails_type_check_AttrErrorz_Test_getObjectSpecificationFallback.test_raises_AttrError_w_provides_fails_type_check_AttrError  sJ    	< 	< 	< 	< 	< 	< 	< 	< 	cceer   c                 
    G d d          }|                      t                    5 }|                      |                       d d d            n# 1 swxY w Y   |                     d|j        j        d                    d S )Nc                   $    e Zd Z ee          ZdS )oTest_getObjectSpecificationFallback.test_raises_AttrError_w_provides_fails_type_check_RuntimeError.<locals>.FooN)r   r   r   r   RuntimeErrorr  r   r   r   r'   r.    s        ++L99LLLr   r'   r  r   )r   r/  rC  r+   	exceptionrx   )r   r'   excs      r   >test_raises_AttrError_w_provides_fails_type_check_RuntimeErrorzbTest_getObjectSpecificationFallback.test_raises_AttrError_w_provides_fails_type_check_RuntimeError  s    	: 	: 	: 	: 	: 	: 	: 	: |,, 	!MM##%%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	cm&8&;<<<<<s   AAAN)r   r   r   r  rs   rC  r
  r  r  r  r  r  r%  r'  r+  r2  r   r   r   r  r  O  s        . . .
 (O3 3 3) ) )(
. 
. 
.) ) )- - -- - -) ) )
 
 


 
 
  	= 	= 	= 	= 	=r   r  c                       e Zd Zd ZdS )Test_getObjectSpecificationc                     ddl m} |S )Nr   )getObjectSpecification)r*   r6  )r   r6  s     r   rs   z+Test_getObjectSpecification._getTargetClass  s    FFFFFF%%r   Nr  r   r   r   r4  r4    s#        & & & & &r   r4  c                        e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Z fd
Z fdZ fdZ fdZ fdZd Zd Z xZS )Test_providedByFallbackc                     ddl m} |S )Nr   )providedByFallback)r*   r:  )r   r:  s     r   r  z)Test_providedByFallback._getFallbackClass  s    BBBBBB!!r   c                 6     |                                  |i |S r0   rv   rw   s      r   rC  z Test_providedByFallback._callFUT  r{   r   c                      G d d          } |            }|                      |          }|                     t          |          g            d S )Nc                       e Zd ZdS )NTest_providedByFallback.test_wo_providedBy_on_class_wo_implements.<locals>.FooNr&   r   r   r   r'   r>    r9   r   r'   r	  r  s       r   )test_wo_providedBy_on_class_wo_implementszATest_providedByFallback.test_wo_providedBy_on_class_wo_implements  r  r   c                     ddl m} ddlm}  |d          } G d d          } |            } |||          |_        |                     |          }|                     t          |          |g           d S )Nr   r  r   r   c                       e Zd ZdS )ATest_providedByFallback.test_w_providedBy_valid_spec.<locals>.FooNr&   r   r   r   r'   rB    r9   r   r'   )r*   r  rL   r   r  rC  r+   rD   )r   r  r   r   r'   r#   r}  s          r   test_w_providedBy_valid_specz4Test_providedByFallback.test_w_providedBy_valid_spec  s    888888;;;;;;~f%%	 	 	 	 	 	 	 	 cee%Xc400}}S!!ddV,,,,,r   c                      G d d          } |            }t                      |_        |                     |          }|                     t	          |          g            d S )Nc                       e Zd ZdS )CTest_providedByFallback.test_w_providedBy_invalid_spec.<locals>.FooNr&   r   r   r   r'   rF    r9   r   r'   )rm   r  rC  r+   rD   r  s       r   test_w_providedBy_invalid_specz6Test_providedByFallback.test_w_providedBy_invalid_spec  sv    	 	 	 	 	 	 	 	 cee#XX}}S!!dR(((((r   c                    ddl m} ddlm}  |d          } ||           G d d                      } |            }t	                      |_        |                     |          }|                     t          |          |g           d S )Nr   r   r   r   c                       e Zd ZdS )VTest_providedByFallback.test_w_providedBy_invalid_spec_class_w_implements.<locals>.FooNr&   r   r   r   r'   rJ  	  r(   r   r'   )	r*   r   rL   r   rm   r  rC  r+   rD   r  s          r   1test_w_providedBy_invalid_spec_class_w_implementszITest_providedByFallback.test_w_providedBy_invalid_spec_class_w_implements  s    ;;;;;;;;;;;;~f%%	T			 	 	 	 	 	 	 
		 cee#XX}}S!!ddV,,,,,r   c                      G d d          } |            }t                      |_        t                      x}|_        |                     |          }|                     ||u            d S )Nc                       e Zd ZdS )cTest_providedByFallback.test_w_providedBy_invalid_spec_w_provides_no_provides_on_class.<locals>.FooNr&   r   r   r   r'   rN  	  r9   r   r'   rm   r  r  rC  rV   r   r'   r#   expectedr}  s        r   >test_w_providedBy_invalid_spec_w_provides_no_provides_on_classzVTest_providedByFallback.test_w_providedBy_invalid_spec_w_provides_no_provides_on_class	  s    	 	 	 	 	 	 	 	 cee#XX&,hh.3#}}S!!()))))r   c                     G d d          } |            }t                      |_        t                      x}|_        t                      |_        |                     |          }|                     ||u            d S )Nc                       e Zd ZdS )eTest_providedByFallback.test_w_providedBy_invalid_spec_w_provides_diff_provides_on_class.<locals>.FooNr&   r   r   r   r'   rU  	  r9   r   r'   rO  rP  s        r   @test_w_providedBy_invalid_spec_w_provides_diff_provides_on_classzXTest_providedByFallback.test_w_providedBy_invalid_spec_w_provides_diff_provides_on_class	  s    	 	 	 	 	 	 	 	 cee#XX&,hh.3#!88}}S!!()))))r   c                 P   ddl m} ddlm}  |d          } ||           G d d                      } |            }t	                      |_        t	                      x|_        |_        |                     |          }|                     t          |          |g           d S )Nr   r   r   r   c                       e Zd ZdS )eTest_providedByFallback.test_w_providedBy_invalid_spec_w_provides_same_provides_on_class.<locals>.FooNr&   r   r   r   r'   rY  )	  r(   r   r'   )
r*   r   rL   r   rm   r  r  rC  r+   rD   r  s          r   @test_w_providedBy_invalid_spec_w_provides_same_provides_on_classzXTest_providedByFallback.test_w_providedBy_invalid_spec_w_provides_same_provides_on_class$	  s    ;;;;;;;;;;;;~f%%	T			 	 	 	 	 	 	 
		 cee#XX.4hh63+}}S!!ddV,,,,,r   c                    ddl m} ddlm}  G d d|          } G d d|          } ||           G d d	                      } ||           G d
 d|                      } |            }|                     t          |                     |                    ||g           t          ||          }|                     |          }	|                     |	j	                   |                     t          |	          |g           d S )Nr   rJ   r   c                       e Zd ZdS )PTest_providedByFallback.test_super_when_base_implements_interface.<locals>.IBaseNr&   r   r   r   r   r]  7	  r9   r   r   c                       e Zd ZdS )STest_providedByFallback.test_super_when_base_implements_interface.<locals>.IDerivedNr&   r   r   r   r   r_  :	  r9   r   r   c                       e Zd ZdS )OTest_providedByFallback.test_super_when_base_implements_interface.<locals>.BaseNr&   r   r   r   r   ra  =	  r(   r   r   c                       e Zd ZdS )RTest_providedByFallback.test_super_when_base_implements_interface.<locals>.DerivedNr&   r   r   r   r  rc  A	  r(   r   r  
r   rK   r*   r   r+   rD   rC  r  rg   r  )r   rK   r   r   r   r   r  derivedr  r  r  s             r   r  zATest_providedByFallback.test_super_when_base_implements_interface3	  s   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
U			 	 	 	 	 	 	 
		 
X			 	 	 	 	d 	 	 
		 '))dmmG4455%7HIIIGW%%mmC  #/***cUG,,,,,r   c                    ddl m} ddlm}  G d d|          } G d d|          } G d d	          } ||           G d
 d|                      } |            }|                     t          |                     |                    |g           t          ||          }|                     t          |                     |                    g            d S )Nr   rJ   r   c                       e Zd ZdS )VTest_providedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.IBaseNr&   r   r   r   r   rh  Q	  r9   r   r   c                       e Zd ZdS )YTest_providedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.IDerivedNr&   r   r   r   r   rj  T	  r9   r   r   c                       e Zd ZdS )UTest_providedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.BaseNr&   r   r   r   r   rl  W	  r9   r   r   c                       e Zd ZdS )XTest_providedByFallback.test_super_when_base_doesnt_implement_interface.<locals>.DerivedNr&   r   r   r   r  rn  Z	  r(   r   r  r  )
r   rK   r   r   r   r   r  re  r  r  s
            r   r  zGTest_providedByFallback.test_super_when_base_doesnt_implement_interfaceM	  s\   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 		 	 	 	 	 	 	 	 
X			 	 	 	 	d 	 	 
		 '))dmmG4455zBBBGW%%dmmC0011266666r   c                    ddl m} ddlm}  G d d|          } G d d|          } ||           G d d	                      } |            }|                     t          |                     |                    |g           t          ||          }|                     |          }|                     |j	                   |                     t          |          g            d S )
Nr   rJ   r   c                       e Zd ZdS )ETest_providedByFallback.test_super_when_base_is_object.<locals>.IBaseNr&   r   r   r   r   rq  h	  r9   r   r   c                       e Zd ZdS )HTest_providedByFallback.test_super_when_base_is_object.<locals>.IDerivedNr&   r   r   r   r   rs  k	  r9   r   r   c                       e Zd ZdS )GTest_providedByFallback.test_super_when_base_is_object.<locals>.DerivedNr&   r   r   r   r  ru  n	  r(   r   r  rd  )
r   rK   r   r   r   r  re  r  r  r  s
            r   r  z6Test_providedByFallback.test_super_when_base_is_objectd	  sK   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
X			 	 	 	 	 	 	 
		 '))dmmG4455zBBBGW%%mmC  #/***cB'''''r   c                    ddl m} ddlm} ddlm}  G d d|          } G d d|          } ||           G d	 d
                      } G d d|          } |            }|                     t          |                     |                    |g            |||           |                     t          |                     |                    ||g           t          ||          }	|                     |	          }
| 	                    |
j
                   |                     t          |
          |g           d S )Nr   rJ   r  r   c                       e Zd ZdS )OTest_providedByFallback.test_super_when_object_directly_provides.<locals>.IBaseNr&   r   r   r   r   rx  	  r9   r   r   c                       e Zd ZdS )RTest_providedByFallback.test_super_when_object_directly_provides.<locals>.IDerivedNr&   r   r   r   r   rz  	  r9   r   r   c                       e Zd ZdS )NTest_providedByFallback.test_super_when_object_directly_provides.<locals>.BaseNr&   r   r   r   r   r|  	  r(   r   r   c                       e Zd ZdS )QTest_providedByFallback.test_super_when_object_directly_provides.<locals>.DerivedNr&   r   r   r   r  r~  	  r9   r   r  )r   rK   r*   r  r   r+   rD   rC  r  rg   r  )r   rK   r  r   r   r   r   r  re  r  r  r  s              r   (test_super_when_object_directly_providesz@Test_providedByFallback.test_super_when_object_directly_providesz	  s   ,,,,,,@@@@@@;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	u 	 	 	 
U			 	 	 	 	 	 	 
			 	 	 	 	d 	 	 	 '))dmmG4455w???(+++dmmG4455%7HIIIGW%%mmC  #/***cUG,,,,,r   c                    ddl m} ddlm}  G d d|          } G d d|          } G d d	|          } G d
 d|          } G d d|          } ||           G d d                      } ||           G d d|                      }	 ||           G d d|                      }
 |||           G d d|	|
                      } |            }t	          ||          }t	          |	|          }t	          |
|          }|                     t          |                     |                    |||||g           |                     t          |                     |                    |||g           |                     t          |                     |                    ||g           |                     t          |                     |                    |g           d S )Nr   rJ   r   c                       e Zd ZdS )OTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.IBaseNr&   r   r   r   r   r  	  r9   r   r   c                       e Zd ZdS )MTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.IM1Nr&   r   r   r   r  r  	  r9   r   r  c                       e Zd ZdS )MTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.IM2Nr&   r   r   r   r  r  	  r9   r   r  c                       e Zd ZdS )RTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.IDerivedNr&   r   r   r   r   r  	  r9   r   r   c                       e Zd ZdS )TTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.IUnrelatedNr&   r   r   r   r  r  	  r9   r   r  c                       e Zd ZdS )NTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.BaseNr&   r   r   r   r   r  	  r(   r   r   c                       e Zd ZdS )LTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.M1Nr&   r   r   r   r  r  	  r(   r   r  c                       e Zd ZdS )LTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.M2Nr&   r   r   r   r  r  	  r(   r   r  c                       e Zd ZdS )QTest_providedByFallback.test_super_multi_level_multi_inheritance.<locals>.DerivedNr&   r   r   r   r  r  	  r(   r   r  r  r  s                   r   r  z@Test_providedByFallback.test_super_multi_level_multi_inheritance	  s   ,,,,,,;;;;;;	 	 	 	 	I 	 	 		 	 	 	 	) 	 	 		 	 	 	 	) 	 	 		 	 	 	 	u 	 	 		 	 	 	 	 	 	 	 
U			 	 	 	 	 	 	 
		 
S			 	 	 	 	 	 	 
		 
S			 	 	 	 	 	 	 
		 
Xz	*	*	 	 	 	 	b" 	 	 
+	*	 GII7ABllBlldmmA..//"JUC@	B 	B 	BdmmB//00uc*	, 	, 	,dmmC0011u	' 	' 	'dmmC0011	" 	" 	" 	" 	"r   c                 J    t          j        | | j        dt                     d S )Nr  )r"  r  )r   r$  rC  rm   r   s    r   .test_catches_only_AttributeError_on_providedByzFTest_providedByFallback.test_catches_only_AttributeError_on_providedBy	  s2    $T4=6F/5	7 	7 	7 	7 	7 	7r   c                 >    t          j        | | j        d           d S )Nr  r!  r#  r   s    r   r'  zATest_providedByFallback.test_catches_only_AttributeError_on_class	  s1     	$$-+	? 	? 	? 	? 	? 	?r   )r   r   r   r  rs   rC  r?  rC  rG  rK  rR  rV  rZ  r  r  r  r  r  r  r'  r	  r
  s   @r   r8  r8    sI       " " "
 (O3 3 3) ) )- - -) ) )- - -	* 	* 	*
* 
* 
*- - -- - - - -47 7 7 7 7.( ( ( ( (,- - - - -:/" /" /" /" /"b7 7 7
? ? ? ? ? ? ?r   r8  c                       e Zd Zd ZdS )Test_providedByc                     ddl m} |S )Nr   r  )r*   r;  )r   r;  s     r   rs   zTest_providedBy._getTargetClass	  r  r   Nr  r   r   r   r  r  	  s#            r   r  c                   B    e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	S )
*ObjectSpecificationDescriptorFallbackTestsc                     ddl m} |S )Nr   )%ObjectSpecificationDescriptorFallback)r*   r  )r   r  s     r   r  z<ObjectSpecificationDescriptorFallbackTests._getFallbackClass	  s&    	2 	2 	2 	2 	2 	244r   c                 6     |                                  |i |S r0   rv   rw   s      r   rz   z3ObjectSpecificationDescriptorFallbackTests._makeOne	  r{   r   c                     ddl m} ddlm}  |d          } G d d          } |||          |_        |                                 |_        |                     t          |j                  |g           d S )Nr   r  r   r   c                       e Zd ZdS )OObjectSpecificationDescriptorFallbackTests.test_accessed_via_class.<locals>.FooNr&   r   r   r   r'   r  	  r9   r   r'   )	r*   r  rL   r   r  rz   r  r+   rD   )r   r  r   r   r'   s        r   test_accessed_via_classzBObjectSpecificationDescriptorFallbackTests.test_accessed_via_class	  s    888888;;;;;;~f%%	 	 	 	 	 	 	 	 $8C..!]]__c011D6:::::r   c                 L   ddl m} ddl m} ddlm}  |d          } |d          } ||           G d d                      } |||          |_        |                                 |_         |            }|                     t          |j                  |g           d S )	Nr   r  r   r   r   r   c                       e Zd ZdS )ZObjectSpecificationDescriptorFallbackTests.test_accessed_via_inst_wo_provides.<locals>.FooNr&   r   r   r   r'   r  	  r(   r   r'   )
r*   r  r   rL   r   r  rz   r  r+   rD   )r   r  r   r   r   r   r'   r#   s           r   "test_accessed_via_inst_wo_provideszMObjectSpecificationDescriptorFallbackTests.test_accessed_via_inst_wo_provides	  s    888888;;;;;;;;;;;;~f%%~f%%	T			 	 	 	 	 	 	 
		 $8C..!]]__ceec011D6:::::r   c                    ddl m} ddl m} ddl m} ddlm}  |d          } |d          } |d          } ||           G d	 d
                      } |||          |_        |                                 |_         |            }	 ||	|           | 	                    t          |	j                  ||g           d S )Nr   r  r  r   r   r   r   r   c                       e Zd ZdS )YObjectSpecificationDescriptorFallbackTests.test_accessed_via_inst_w_provides.<locals>.FooNr&   r   r   r   r'   r  
  r(   r   r'   )r*   r  r  r   rL   r   r  rz   r  r+   rD   )
r   r  r  r   r   r   r   r   r'   r#   s
             r   !test_accessed_via_inst_w_provideszLObjectSpecificationDescriptorFallbackTests.test_accessed_via_inst_w_provides
  s#   888888@@@@@@;;;;;;;;;;;;~f%%~f%%~f%%	T			 	 	 	 	 	 	 
		 $8C..!]]__ceed###c011D$<@@@@@r   c                       G d dt                      G  fdd          } |            }                               5  t          |d           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )vObjectSpecificationDescriptorFallbackTests.test_arbitrary_exception_accessing_provides_not_caught.<locals>.MyExceptionNr&   r   r   r   MyExceptionr  
  r9   r   r  c                   R    e Zd Z                                Ze fd            ZdS )nObjectSpecificationDescriptorFallbackTests.test_arbitrary_exception_accessing_provides_not_caught.<locals>.Fooc                     r0   r   )r   r  s    r   r  z{ObjectSpecificationDescriptorFallbackTests.test_arbitrary_exception_accessing_provides_not_caught.<locals>.Foo.__provides__!
  s	    !!r   Nr   r   r   rz   r  rX  r  )r  r   s   r   r'   r  
  sE        !]]__N" " " " X" " "r   r'   r  )	Exceptionr   r  )r   r'   r#   r  s   `  @r   6test_arbitrary_exception_accessing_provides_not_caughtzaObjectSpecificationDescriptorFallbackTests.test_arbitrary_exception_accessing_provides_not_caught
  s    	 	 	 	 	) 	 	 		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" cee{++ 	+ 	+C)***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A##A'*A'c                       G d dt                     } G  fdd          } |            }t          |d          }                     |           d S )Nc                       e Zd ZdS )mObjectSpecificationDescriptorFallbackTests.test_AttributeError_accessing_provides_caught.<locals>.MyExceptionNr&   r   r   r   r  r  +
  r9   r   r  c                   N    e Zd Z                                 Zed             ZdS )eObjectSpecificationDescriptorFallbackTests.test_AttributeError_accessing_provides_caught.<locals>.Fooc                     t           r0   )r  r   s    r   r  zrObjectSpecificationDescriptorFallbackTests.test_AttributeError_accessing_provides_caught.<locals>.Foo.__provides__1
  s    $$r   Nr  r   s   r   r'   r  .
  s;        !]]__N% % X% % %r   r'   r  )r  r  assertIsNotNone)r   r  r'   r#   provideds   `    r   -test_AttributeError_accessing_provides_caughtzXObjectSpecificationDescriptorFallbackTests.test_AttributeError_accessing_provides_caught)
  s    	 	 	 	 	) 	 	 		% 	% 	% 	% 	% 	% 	% 	% 	% 	% cee3 011X&&&&&r   c                    ddl m} ddl m}  G d d|          } ||           G d d                      }|                                 |_        t           |            d          }|                     |           d S )	Nr   rJ   r   c                       e Zd ZdS )ZObjectSpecificationDescriptorFallbackTests.test_None_in__provides__overrides.<locals>.IFooNr&   r   r   r   r   r  =
  r9   r   r   c                   $    e Zd Zed             ZdS )YObjectSpecificationDescriptorFallbackTests.test_None_in__provides__overrides.<locals>.Fooc                     d S r0   r   r   s    r   r  zfObjectSpecificationDescriptorFallbackTests.test_None_in__provides__overrides.<locals>.Foo.__provides__C
  s    tr   N)r   r   r   rX  r  r   r   r   r'   r  @
  s/           X  r   r'   r  )r   rK   r   rz   r  r  rg   )r   rK   r   r   r'   r  s         r   !test_None_in__provides__overrideszLObjectSpecificationDescriptorFallbackTests.test_None_in__provides__overrides9
  s    ,,,,,,......	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 "]]__3355"233(#####r   N)r   r   r   r  rs   rz   r  r  r  r  r  r  r   r   r   r  r  	  s        5 5 5 (O3 3 3
; 
; 
;; ; ; A A A&+ + + ' ' ' $ $ $ $ $r   r  c                       e Zd Zd ZdS )"ObjectSpecificationDescriptorTestsc                     ddl m} |S )Nr   )ObjectSpecificationDescriptor)r*   r  )r   r  s     r   rs   z2ObjectSpecificationDescriptorTests._getTargetClassT
  s    MMMMMM,,r   Nr  r   r   r   r  r  M
  s#        - - - - -r   r  c                        e Zd Zd Zd Zd ZdS )r/  c                     | _         fd|D             | _        |                                D ]\  }}t          ||           d S )Nc                 2    i | ]}|t          |          S r   )r  ).0keymodules     r   
<dictcomp>z$_Monkey.__init__.<locals>.<dictcomp>`
  s%    CCC3 4 4CCCr   )r  
to_restoreitemsr  )r   r  ry   r  rO  s    `   r   r$  z_Monkey.__init__^
  s_    CCCCCCC((** 	( 	(JCFC''''	( 	(r   c                     | S r0   r   r   s    r   	__enter__z_Monkey.__enter__d
  s    r   c                 p    | j                                         D ]\  }}t          | j        ||           d S r0   )r  r  r  r  )r   exc_typeexc_valexc_tbr  rO  s         r   __exit__z_Monkey.__exit__g
  sD    ///11 	- 	-JCDKe,,,,	- 	-r   Nr   r   r   r$  r  r  r   r   r   r/  r/  \
  sA        ( ( (  - - - - -r   r/  c                        e Zd Zd Zd Zd ZdS )ra  c                     || _         t          ||          | _        | j                                        | _        | j                                         | j                            |           d S r0   )r  r  targetcopyr  clearupdate)r   r  attrnamery   s       r   r$  z_MonkeyDict.__init__o
  s_    fh//+**,,2r   c                     | j         S r0   )r  r   s    r   r  z_MonkeyDict.__enter__v
  s
    {r   c                 v    | j                                          | j                             | j                   d S r0   )r  r  r  r  )r   r  r  r  s       r   r  z_MonkeyDict.__exit__y
  s4    4?+++++r   Nr  r   r   r   ra  ra  l
  sA            , , , , ,r   ra  )/r
  unittestr  r   r   r   #zope.interface.tests.test_interfacer   r   TestCaser   r<   rq   r   r   r?  r  r  r   r3  rg  rl  rv  r  r  r  r  r(  r8  rV  ra  ru  r  r  r  r  r  r  r  r  r4  r8  r  r  r  r/  ra  r   r   r   <module>r     s     1 1 1 1 1 1 6 6 6 6 6 6 2 2 2 2 2 2& & & & & &       ( 
  
  
  
  
"  
  
  
F7( 7( 7( 7( 7(H- 7( 7( 7(tH9 H9 H9 H9 H9, H9 H9 H9V@, @, @, @, @,4 @, @, @,Fy8 y8 y8 y8 y86&y8 y8 y8xc" c" c" c" c"!2 c" c" c"L    3.  '% '% '% '% '% '% '% '%T/4 /4 /4 /4 /43X5F /4 /4 /4dn
 n
 n
 n
 n
/1B n
 n
 n
b/ / / / / 4 / / /
 
 
 
 
h/ 
 
 
2AD AD AD AD AD+ AD AD ADH >  >  >  >  >4  >  >  >F91 91 91 91 91* 91 91 91x# # # # #1 # # #LG
 G
 G
 G
 G
H- G
 G
 G
T '  '  '  '  'H%  '  '  'F:A :A :A :A :AH- :A :A :Az)
 )
 )
 )
 )
) )
 )
 )
X<@ <@ <@ <@ <@H- <@ <@ <@~4H 4H 4H 4H 4HX%6 4H 4H 4Hn) ) ) ) )") ) )"#= #= #= #= #=* #= #= #=L* * * * *1 * * *ZM
 M
 M
 M
 M
H- M
 M
 M
`3; 3; 3; 3; 3;h/ 3; 3; 3;l
 
 
 
 
H% 
 
 
49 9 9 9 9(+ 9 9 9xx= x= x= x= x=(*; x= x= x=v& & & & &"E"7& & &~? ~? ~? ~? ~?h/ ~? ~? ~?B    -+  m$ m$ m$ m$ m$1B m$ m$ m$`	- 	- 	- 	- 	-2	- 	- 	-- - - - - - - - , , , , , , , , , ,r   