
    Vh|:                       d Z ddlZddlmZ d Z G d d      Z G d de      Z G d	 d
e      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e      Z G d dej                        Z G d dee      Z G d dej                        Z G d dej                        Z G d d e      Z G d! d"ej                        Zy)#zAdapter registry tests
    N)OptimizationTestMixinc            	          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|      }	|||||||||	f	S )Nr   	Interfacec                       e Zd Zy)_makeInterfaces.<locals>.IB0N__name__
__module____qualname__     Q/home/dcms/DCMS/lib/python3.12/site-packages/zope/interface/tests/test_adapter.pyIB0r          r   r   c                       e Zd Zy)_makeInterfaces.<locals>.IB1Nr	   r   r   r   IB1r      r   r   r   c                       e Zd Zy)_makeInterfaces.<locals>.IB2Nr	   r   r   r   IB2r   !   r   r   r   c                       e Zd Zy)_makeInterfaces.<locals>.IB3Nr	   r   r   r   IB3r   $   r   r   r   c                       e Zd Zy)_makeInterfaces.<locals>.IB4Nr	   r   r   r   IB4r   '   r   r   r   c                       e Zd Zy)_makeInterfaces.<locals>.IF0Nr	   r   r   r   IF0r   *   r   r   r    c                       e Zd Zy)_makeInterfaces.<locals>.IF1Nr	   r   r   r   IF1r"   -   r   r   r#   c                       e Zd Zy)_makeInterfaces.<locals>.IR0Nr	   r   r   r   IR0r%   0   r   r   r&   c                       e Zd Zy)_makeInterfaces.<locals>.IR1Nr	   r   r   r   IR1r(   3   r   r   r)   )zope.interfacer   )
r   r   r   r   r   r   r    r#   r&   r)   s
             r   _makeInterfacesr+      s    (i c c c3 c3 i c i c  S#sCc366r   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y)	CustomDataTypeBaseNc                      | j                   |   S N_dataselfnames     r   __getitem__zCustomDataTypeBase.__getitem__?   s    zz$r   c                 "    || j                   |<   y r/   r0   )r3   r4   values      r   __setitem__zCustomDataTypeBase.__setitem__B   s     

4r   c                     | j                   |= y r/   r0   r2   s     r   __delitem__zCustomDataTypeBase.__delitem__E   s    JJtr   c                 ,    t        | j                        S r/   )lenr1   r3   s    r   __len__zCustomDataTypeBase.__len__H   s    4::r   c                     || j                   v S r/   r0   r2   s     r   __contains__zCustomDataTypeBase.__contains__K   s    tzz!!r   c                 l    || u ryt        |      t        |       ury|j                  | j                  k(  S )NTF)typer1   r3   others     r   __eq__zCustomDataTypeBase.__eq__N   s2    D=;d4j({{djj((r   c                 ,    t        | j                        S r/   )reprr1   r=   s    r   __repr__zCustomDataTypeBase.__repr__V   s    DJJr   )r
   r   r   r1   r5   r8   r:   r>   r@   rE   rH   r   r   r   r-   r-   <   s*    E !") r   r-   c                       e Zd ZddZy)CustomMappingNc                     i | _         |r| j                   j                  |       | j                   j                  | _        | j                   j                  | _        y r/   )r1   updategetitemsrC   s     r   __init__zCustomMapping.__init__[   s>    
JJe$::>>ZZ%%
r   r/   r
   r   r   rO   r   r   r   rJ   rJ   Z   s    &r   rJ   c                       e Zd ZddZy)CustomSequenceNc                     g | _         |r| j                   j                  |       | j                   j                  | _        y r/   )r1   extendappendrC   s     r   rO   zCustomSequence.__init__d   s/    
JJe$jj''r   r/   rP   r   r   r   rR   rR   c   s    (r   rR   c                       e Zd Zy)CustomLeafSequenceNr	   r   r   r   rW   rW   k       r   rW   c                       e Zd Zy)CustomProvidedNr	   r   r   r   rZ   rZ   o   rX   r   rZ   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,dZd,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' Z)d( Z*d) Z+d* Z,d+ Z-y)-BaseAdapterRegistryTestsNc                     ddl m} |S )Nr   BaseAdapterRegistryzope.interface.adapterr_   )r3   r_   s     r   _getBaseAdapterRegistryz0BaseAdapterRegistryTests._getBaseAdapterRegistryw   s    >""r   c                     | j                         } G d d|      }|j                  D ]!  }t        |j                  |t	                      # |S )Nc                        e Zd Z G d d      Zy)6BaseAdapterRegistryTests._getTargetClass.<locals>._CUTc                   ,    e Zd ZdxZZd Zd Zd Zd Zy)BBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClassr   c                      y r/   r   )r3   regs     r   rO   zKBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.__init__   s    r   c                 0    | xj                   |fz  c_         y r/   _changed)r3   origs     r   changedzJBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.changed   s    MMdW,Mr   c                 0    | xj                   |fz  c_         y r/   )
_extendorsr3   provideds     r   add_extendorzOBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.add_extendor   s    OO{2Or   c                 h    t        | j                  D cg c]	  }||k7  r| c}      | _        y c c}w r/   )tuplerp   )r3   rr   xs      r   remove_extendorzRBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.remove_extendor   s3    &+ -?101X ./ -? '@DO -?s   /N)	r
   r   r   rl   rp   rO   rn   rs   rw   r   r   r   LookupClassrg      s!    (**:-3@r   rx   N)r
   r   r   rx   r   r   r   _CUTre   ~   s    @ @r   ry   )rb   
_delegatedsetattrrx   object)r3   r_   ry   r4   s       r   _getTargetClassz(BaseAdapterRegistryTests._getTargetClass{   sP    "::<	@& 	@$ (22 	6DD$$dFH5	6r   c                 ,     | j                                S r/   r}   r=   s    r   _makeOnez!BaseAdapterRegistryTests._makeOne   s    %t##%''r   c                     t         S r/   dictr=   s    r   _getMappingTypez(BaseAdapterRegistryTests._getMappingType       r   c                     t         S r/   r   r=   s    r   _getProvidedTypez)BaseAdapterRegistryTests._getProvidedType   r   r   c                     t         S r/   )listr=   s    r   _getMutableListTypez,BaseAdapterRegistryTests._getMutableListType   r   r   c                     t         S r/   )ru   r=   s    r   _getLeafSequenceTypez-BaseAdapterRegistryTests._getLeafSequenceType   s    r   c                     | j                         } |       }|j                  D ]2  }| j                  t        ||      t        |j                  |             4 y r/   )r}   rz   assertIsgetattr	_v_lookup)r3   CUTregistryr4   s       r   test_lookup_delegationz/BaseAdapterRegistryTests.test_lookup_delegation   sO    ""$5NN 	DMM$'1C1CT)J	r   c                 \    | j                         }| j                  |j                  d       y N   )r   assertEqual_generationr3   r   s     r   "test__generation_on_first_creationz;BaseAdapterRegistryTests.test__generation_on_first_creation   s#    ==?--q1r   c                     | j                         }t               }|j                  |       | j                  |j                  d       | j                  |j
                  j                  ||f       y N   )r   r|   rn   r   r   r   rl   )r3   r   rm   s      r   &test__generation_after_calling_changedz?BaseAdapterRegistryTests.test__generation_after_calling_changed   sY    ==?x--q1++44x6GHr   c                      G d d      }| j                         }|f|_        | j                  |j                  d       y )Nc                       e Zd Zy)QBaseAdapterRegistryTests.test__generation_after_changing___bases__.<locals>._BaseNr	   r   r   r   _Baser          r   r   r   )r   	__bases__r   r   )r3   r   r   s      r   )test__generation_after_changing___bases__zBBaseAdapterRegistryTests.test__generation_after_changing___bases__   s7    	 	==?#X--q1r   c                    | j                  t        |j                        |       | j                  |j                  | j	                                | j                         }|j                  D ]  }| j                  ||        | j                  |j                  d    |              | j                  |j                  d   |       | j                  t        |j                  |dz
           d       y Nr   r   )r   r<   	_adaptersassertIsInstancer   r   r3   r   expected_orderMTmappings        r   _check_basic_types_of_adaptersz7BaseAdapterRegistryTests._check_basic_types_of_adapters   s    ""#^	
 	h00$2J2J2LM!!#)) 	/G!!'2.	/++A.5h003R8X//0BCDaHr   c                    | j                  t        |j                        |       | j                  |j                  | j	                                | j                         }|j                  D ]  }| j                  ||        |ro| j                  |j                  d    |              | j                  |j                  d   |       | j                  t        |j                  |dz
           d       y y r   )r   r<   _subscribersr   r   r   r   s        r   !_check_basic_types_of_subscribersz:BaseAdapterRegistryTests._check_basic_types_of_subscribers   s    %%&	
 	!!4#;#;#=	
 !!#,, 	/G!!'2.	/X2215rt<!!("7"7":B?S!6!6~7I!JKQO r   c                 p   t               \	  }}}}}}}}}	| j                         }
|
j                  |g|dd       | j                  |
j	                  |g|d      d       | j                  |
j
                  d       | j                  |
       | j                         }| j                  |
j                  d    || || |ddi      i      i             | j                         }| j                  |
j                   ||di             t        |
j                               }| j                  ||f|ddfg       y )N A1r   r   )r+   r   registerr   
registeredr   r   r   r   r   	_providedr   allRegistrations)r3   r   r   r   r   r   r    r#   r&   r)   r   r   PTr   s                 r   test_registerz&BaseAdapterRegistryTests.test_register   sM    	
c3S#sC==?3%b$/,,cUC<dC--q1++H5!!#++A.RT
^ 4
 1 	
 ""$++R1
 . 	 (3356
F	'
 & 	r   c                 .  
 t               \	  
}}}| j                         }|j                  g dd       |j                  g dd       |j                  
gdd       |j                  
gdd       |j                  
gdd       |j                  
gdd       |j                  
gdd       |j                  
gdd       |j                  
gd	d       |j                  
gdd       
fd
}| j                  |j                   || j                         | j                                      t        |j                               }| j                  |dddfdddf
fddf
fddf
fddf
fddf
fddf
fddf
fd	df
fddfg
       | j                         }|D ]  } |j                  |   | j                  |j                  |j                         | j                  |j                  |j                         t        |_        t        |_        t        |_        t         |_        d }	|	|_        |j'                          | j                  |j                   |t        t                     y )Nr   r   name1A2name2A3name3A4name4c                      |  | |ddd      i       | | |ddd       |ddd      i      i       | | | |ddi      i       | |d	di       |d
di      i       | |ddi      i      i      i      g      S )Nr   r   )r   r   )r   r   r   r   )r   r   r   r   r   r   )Lr   r   r   r   r   r&   r)   s     r   build_adapterszXBaseAdapterRegistryTests.test_register_multiple_allRegistrations.<locals>.build_adapters	  s    !%   R $%)!  R $%)! 	 	  RRJ!  RWdO!4WdO!4!  RRJ!   -$ $ $r   )r   r   r   c                 D    | | n	t               } | j                  |       | S r/   rW   rU   existingnews     r   addValuezRBaseAdapterRegistryTests.test_register_multiple_allRegistrations.<locals>.addValueP  (    $06H6J  OOC Or   )r+   r   r   r   r   r   r   sortedr   r   rJ   _mappingTyperW   _leafSequenceTyperR   _sequenceTyperZ   _providedType_addValueToLeafrebuild)r3   r   r    r#   r   r   r   	registry2argsr   r   r   r   r   r&   r)   s             @@@@@@r   'test_register_multiple_allRegistrationsz@BaseAdapterRegistryTests.test_register_multiple_allRegistrations   s    	
c3S#sC==?"c2t,"c7D13%b$/3%gt43%b$/3%gt43*c2t43*c7D93*c7D93*c2t4%	 %	N 	++'$*B*B*D+/+?+?+AC	D H5578
b$gt$VS"d#VS'4(VS"d#VS'4(3Zb$'3Zgt,3Zgt,3Zb$'&
 	 MMO	 	&DI%	& 	,,h.@.@A,,h.@.@A !.%7"!/!/	 $, ++'- -	r   c           	          t               \	  }}}}}}}}}	| j                         }
| j                  t              5  |
j	                  |g|t               d       d d d        y # 1 sw Y   y xY wNr   )r+   r   assertRaises
ValueErrorr   r|   r3   r   r   r   r   r   r    r#   r&   r)   r   s              r   test_register_with_invalid_namez8BaseAdapterRegistryTests.test_register_with_invalid_namea  sh     	
c3S#sC==?z* 	:seS&(D9	: 	: 	:s   A!!A*c           	         t               \	  }}}}}}}}}	| j                         }
|
j                  d g|dd       |
j                  d g|dd        | j                  t	        |
j
                        d       | j                  |
j
                  | j                                t        |
j                               }| j                  |g        y )Nr   r   r   )
r+   r   r   r   r<   r   r   r   r   r   )r3   r   r   r   r   r   r    r#   r&   r)   r   r   s               r   )test_register_with_value_None_unregisterszBBaseAdapterRegistryTests.test_register_with_value_None_unregistersi  s     	
c3S#sC==?4&#r404&#r40X//0!4h00$2J2J2LM(3356
R(r   c                 "   ddl m} t               \	  }}}}}}}}	}
| j                         }t	               }|j                  d g|	d|       |j                  }|j                  d g|	d|       | j                  |j                  |       | j                  |       | j                         }| j                  |j                  d    || ||	 |d|i      i      i             t        |j                               }| j                  ||f|	d|fg       y )Nr   r   r   r   )r*   r   r+   r   r|   r   r   r   r   r   r   r   r   )r3   r   r   r   r   r   r   r    r#   r&   r)   r   _value_beforer   r   s                   r   test_register_with_same_valuez6BaseAdapterRegistryTests.test_register_with_same_valueu  s!   , 	
c3S#sC==?4&#r62&&4&#r62--w7++H5!!#++A.2RV-1
 	 (3356
L	'
 & 	r   c                     | j                         }| j                  |j                  d gd d      d        t        |j	                               }| j                  |g        y Nr   )r   r   r   r   r   )r3   r   r   s      r   test_registered_emptyz.BaseAdapterRegistryTests.test_registered_empty  sQ    ==?,,dVT2>E(3356
R(r   c           	          t               \	  }}}}}}}}}	| j                         }
|
j                  |gd dd       | j                  |
j	                  |gd d      d        y Nr   r   )r+   r   r   r   r   r   s              r   test_registered_non_empty_missz7BaseAdapterRegistryTests.test_registered_non_empty_miss  sd     	
c3S#sC==?3%r40,,cUD"=tDr   c                     | j                         }|j                  d gd dd       | j                  |j                  d gd d      d       y r   )r   r   r   r   r   s     r   test_registered_non_empty_hitz6BaseAdapterRegistryTests.test_registered_non_empty_hit  sD    ==?4&$D1,,dVT2>Er   c                     | j                         }|j                  d gd d       | j                  |j                  d gd d      d        | j                  t	        |j
                        d       y )Nr   r   )r   
unregisterr   r   r<   r   r   s     r   test_unregister_emptyz.BaseAdapterRegistryTests.test_unregister_empty  s]    ==?TFD"-,,dVT2>EX//0!4r   c                    t               \	  }}}}}}}}}	| j                         }
|
j                  |gd dd       |
j                  |gd d       | j	                  |
j                  |gd d      d       | j                  |
       | j                         }| j	                  |
j                  d    || |d  |ddi      i      i             | j                         }| j	                  |
j                   |d di             y )Nr   r   r   r+   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r    r#   r&   r)   r   r   r   s                r   *test_unregister_non_empty_miss_on_requiredzCBaseAdapterRegistryTests.test_unregister_non_empty_miss_on_required  s    	
c3S#sC==?3%r40SE4,,,cUD"=tD++H5!!#++A.Rb"dn1
 	 ""$++R!1
 . 	r   c                    t               \	  }}}}}}}}}	| j                         }
|
j                  |gd dd       |
j                  |gd d       | j	                  |
j                  |gd d      d       | j                  |
       | j                         }| j	                  |
j                  d    || |d  |ddi      i      i             | j                         }| j	                  |
j                   |d di             y )Nr   r   nonesuchr   r   r   s                r   &test_unregister_non_empty_miss_on_namez?BaseAdapterRegistryTests.test_unregister_non_empty_miss_on_name  s    	
c3S#sC==?3%r40SE44,,cUD"=tD++H5!!#++A.Rb"dn1
 	 ""$++R!1
 . 	r   c           	         t               \	  }}}}}}}}}	| j                         }
t               }t               }|
j                  |gd d|       |
j	                  |gd d|       | j                  |
j                  |gd d      |       y r   )r+   r   r|   r   r   r   r   r3   r   r   r   r   r   r    r#   r&   r)   r   rm   nomatchs                r   (test_unregister_with_value_not_None_misszABaseAdapterRegistryTests.test_unregister_with_value_not_None_miss  s     	
c3S#sC==?x(3%r40SE4W5h))3%r:DAr   c                    t               \	  }}}}}}}}}	| j                         }
t               }t               }|
j                  ||gd d|       |
j                  ||gd d|       | j	                  |
d       | j                  ||
j                  d   |          | j                  ||
j                  d   |          | j                         }| j                  |
j                  d    || || |d  |d|i      i      | |d  |d|i      i      i      i             | j                         }| j                  |
j                   |d di             |
j                  ||gd d|       | j                  ||
j                  d   |          | j                  ||
j                  d   |          | j                  |
j                  d    || || |d  |d|i      i      i      i             | j                  |
j                   |d di             y )Nr      r   r   r   )r+   r   r|   r   r   assertInr   r   r   r   r   r   assertNotIn)r3   r   r   r   r   r   r    r#   r&   r)   r   oneanotherr   r   s                  r   .test_unregister_hit_clears_empty_subcomponentszGBaseAdapterRegistryTests.test_unregister_hit_clears_empty_subcomponents  s2    	
c3S#sC==?h(3*dB43*dB8++HQ+Gc8--a056c8--a056!!#++A.RRr2s)} 56Rr2w-'8 9:	1
 		 ""$++R!1
 . 	 	S#Jb':c8--a056h003C89++A.RRr2s)} 561
 	 	++R!1
 . 	r   c                     | j                         }|j                  d gd d       | j                  |j                  d gd d      d        | j	                  |d       y )Nr   r   r   )r   unsubscriber   r   r   r   s     r   test_unsubscribe_emptyz/BaseAdapterRegistryTests.test_unsubscribe_empty  sU    ==?dVT2.,,dVT2>E..x.Jr   c                    t               \	  }}}}}}}}}	| j                         }
t               }|
j                  |gd |       | j	                         }| j                         }| j                         }| j                  |
       | j                  |
j                  d    || |d  |d ||f      i      i      i             | j                  |
j                   |i              |
j                  |gd |       | j                  t        |
j                        d       | j                  |
j                   |i              y )Nr   r   r   )r+   r   r|   	subscriber   r   r   r   r   r   r   r  r<   )r3   r   r   r   r   r   r    r#   r&   r)   r   rm   r   r   r   s                  r   test_unsubscribe_hitz-BaseAdapterRegistryTests.test_unsubscribe_hit  s5    	
c3S#sC==?xC5$-!!#%%'""$..x8..q12b4'
  7
 4 	 	++RV4cUD$/X223Q7++RV4r   c                 (    | j                  ||       y)a  
        Implementations may choose to use new, immutable objects
        instead of mutating existing subscriber leaf objects, or vice versa.

        The default implementation uses immutable tuples, so they are never
        the same. Other implementations may use persistent lists so they
        should be the same and mutated in place. Subclasses testing this
        behaviour need to override this method.
        N)assertIsNotr3   leaf1leaf2s      r   assertLeafIdentityz+BaseAdapterRegistryTests.assertLeafIdentity0  s     	&r   c                    t               \	  }}}}}}}}}	| j                         }
t               }t               }t               }t               }|
j                  |gd |       |
j                  |gd |       |
j                  |g||       |
j                  |g||       | j	                  |
d       | j                         }| j                         }| j                         }| j                  |
j                  d    || |d  |d |||f      i      | |d |||f      i      i      i             | j                  |
j                   ||di             |
j                  d   |   |   d   }|
j                  d   |   d    d   }|
j                  |gd |       |
j                  |g||       | j                  |
j                  d    || |d  |d ||f      i      | |d ||f      i      i      i             | j                  |
j                   ||di             |
j                  d   |   |   d   }|
j                  d   |   d    d   }| j                  ||       | j                  ||       |
j                  |gd |       |
j                  |g||       | j                  t        |
j                        d       | j                  t        |
j                        d       y )Nr   r   r   r   r   )r+   r   r|   r  r   r   r   r   r   r   r   r  r  r<   )r3   r   r   r   r   r   r    r#   r&   r)   r   firstsecondthirdfourthr   r   r   IR0_leaf_origNon_leaf_origIR0_leaf_newNon_leaf_news                         r   test_unsubscribe_after_multiplez8BaseAdapterRegistryTests.test_unsubscribe_after_multiple<  s    	
c3S#sC==?C5$.C5$/C5#u-C5#v...x.J!!#%%'""$..q12b"a012RQv/01 7
 4 	 	++R1
 . 	
 !--a05c:2> --a05d;B?cUD%0cUC/..q12b"a	l+,RQy\*+ 7
 4 	 	++R1
 . 	  ,,Q/4S9"=,,Q/4T:2>|<|<cUD&1cUC0X223Q7X//0!4r   c                    t               \	  }}}}}}}}}	| j                         }
t               }|
j                  |g||       |
j                  |g||       | j	                         }| j                         }| j                         }| j                  |
j                  d    || || |d |||f      i      i      i             | j                  |
j                   ||di             |
j                  |g||       |
j                  |g||       | j                  t        |
j                        d       | j                  |
j                   |              y Nr   r   r   r   r+   r   r|   r  r   r   r   r   r   r   r  r<   )r3   r   r   r   r   r   r    r#   r&   r)   r   r  r   r   r   s                  r   5test_subscribe_unsubscribe_identical_objects_providedzNBaseAdapterRegistryTests.test_subscribe_unsubscribe_identical_objects_providedr  sZ    	
c3S#sC==?C5#u-C5#u-!!#%%'""$..q12RQu~./0 7
 4 	
 	++R1
 . 	 	cUC/cUC/X223Q7++RT2r   c                    t               \	  }}}}}}}}}	| j                         }
t               }t               }|
j                  |g||       |
j                  |g||       | j	                         }| j                         }| j                         }| j                  |
j                  d    || || |d |||f      i      i      i             | j                  |
j                   ||di             |
j                  |g||       |
j                  |g||       | j                  t        |
j                        d       | j                  |
j                   |              y r  r  )r3   r   r   r   r   r   r    r#   r&   r)   r   r  r  r   r   r   s                   r   4test_subscribe_unsubscribe_nonequal_objects_providedzMBaseAdapterRegistryTests.test_subscribe_unsubscribe_nonequal_objects_provided  sa    	
c3S#sC==?C5#u-C5#v.!!#%%'""$..q12RQv/01 7
 4 	
 	++R1
 . 	 	cUC/cUC0X223Q7++RT2r   c                     | j                         }| j                  |j                  d gd d             t        |j	                               }| j                  |g        y r   )r   assertIsNone
subscribedr   allSubscriptionsr   )r3   r   r  s      r   test_subscribed_emptyz.BaseAdapterRegistryTests.test_subscribed_empty  sO    ==?(--tfdB?@(3356
R(r   c           	      F   t               \	  }}}}}}}}}	| j                         }
|
j                  |g|d       | j                  |
j	                  |g|d             | j                  |
j	                  |g|d             | j                  |
j	                  |g|d             y )Nr   r   )r+   r   r  r  r  r   s              r   test_subscribed_non_empty_missz7BaseAdapterRegistryTests.test_subscribed_non_empty_miss  s     	
c3S#sC==?C5#t,(--seS"=>(--seS"=>(--seS"=>r   c           	          t               \	  }}}}}}}}}	| j                         }
|
j                  |g|d       | j                  |
j	                  |g|d      d       y r   )r+   r   r  r   r  r   s              r   test_subscribed_non_empty_hitz6BaseAdapterRegistryTests.test_subscribed_non_empty_hit  sb     	
c3S#sC==?C5#t,,,cUC>Er   c           	      Z   t               \	  }}}}}}}}}	| j                         }
t               }t               }|
j                  |gd |       |
j                  |gd |       | j	                  |
d       |
j                  |gd        | j                  t        |
j                        d       y )Nr   r   r   )	r+   r   r|   r  r   r  r   r<   r   )r3   r   r   r   r   r   r    r#   r&   r)   r   r  r  s                r   &test_unsubscribe_w_None_after_multiplez?BaseAdapterRegistryTests.test_unsubscribe_w_None_after_multiple  s     	
c3S#sC==?C5$.C5$/..x.JcUD)X223Q7r   c                    t               \	  }}}}}}}}}	| j                         }
|
j                  |gd d       | j                  |
d       |
j	                  |gd d       | j                  t        |
j                        d       | j                         }| j                         }| j                  |
j                  d    || |d  |d |d      i      i      i             y )Nr   r   r   r   r   r   
r+   r   r  r   r  r   r<   r   r   r   r3   r   r   r   r   r   r    r#   r&   r)   r   r   r   s                r   +test_unsubscribe_non_empty_miss_on_requiredzDBaseAdapterRegistryTests.test_unsubscribe_non_empty_miss_on_required  s     	
c3S#sC==?C5$-..x.JcUD"-X223Q7!!#%%'..q12b"aj)* 7
 4 	r   c                    t               \	  }}}}}}}}}	| j                         }
|
j                  |gd d       | j                  |
d       |
j	                  |gd d       | j                  t        |
j                        d       | j                         }| j                         }| j                  |
j                  d    || |d  |d |d      i      i      i             y )Nr   r   r   r   r   r   r)  r*  r+  s                r   (test_unsubscribe_non_empty_miss_on_valuezABaseAdapterRegistryTests.test_unsubscribe_non_empty_miss_on_value  s     	
c3S#sC==?C5$-..x.JcUD$/X223Q7!!#%%'..q12b"aj)* 7
 4 	r   c           	         t               \	  }}}}}}}}}	| j                         }
t               }t               }|
j                  |gd |       |
j	                  |gd |       | j                  t        |
j                        d       y r   )r+   r   r|   r  r  r   r<   r   r   s                r   )test_unsubscribe_with_value_not_None_misszBBaseAdapterRegistryTests.test_unsubscribe_with_value_not_None_miss  s~     	
c3S#sC==?x(C5$-cUD'2X223Q7r   c                 &    | j                  d       y )Nz*Example method, not intended to be called.failr=   s    r   _instance_method_notify_targetz7BaseAdapterRegistryTests._instance_method_notify_target  s    		>?r   c           	      X   t               \	  }}}}}}}}}	| j                         }
| j                  t        |
j                        d       |
j                  |gd | j                         |
j                  |gd | j                         | j                  t        |
j                        d       y Nr   )r+   r   r   r<   r   r  r4  r  r   s              r    test_unsubscribe_instance_methodz9BaseAdapterRegistryTests.test_unsubscribe_instance_method  s     	
c3S#sC==?X223Q7C5$(K(KLcUD$*M*MNX223Q7r   c                    t               \	  }}}| j                         }|j                  g d       |j                  g d       |j                  gd       |j                  gd       |j                  gd       |j                  gd       |j                  gd       |j                  gd       |j                  gd       |j                  gd       fd}| j                  |j                   || j                         | j                         | j                                      fd}| j                  |j                   || j                                      t        |j                               }| j                  |d	dfd	dffdffdffdffdffdffdffdffdfg
       | j                         }|D ]  }	 |j                  |	   | j                  |j                  |j                         | j                  |j                  |j                         t        |_        t        |_        t         |_        t$        |_        d
 }
|
|_        |j+                          | j                  |j                   |t         t        t                     y )Nr   r   r   r   c                     |  | |d |ddg      i      i       | | |d |ddg      i       |d |ddg      i      i      i       | | | |d |dg      i      i       | |d |dg      i       |d |dg      i      i       | |d |dg      i      i      i      i      g      S )Nr   r   r   r   r   r   )	r   Fr   r   r   r   r   r&   r)   s	      r   build_subscribersz\BaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.build_subscribers   s5   AtTlO   R4,!  R4,! 	 	 	 RRD6O!4!  RRD6O!4RD6O!4!  RRD6O!4!   '! ! !r   )r   r:  r   c                      | ddi      S )N      r   )Pr&   r)   s    r   build_providedzYBaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.build_providedK  s    QQ  r   )r?  r   c                 D    | | n	t               } | j                  |       | S r/   r   r   s     r   r   zSBaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.addValuep  r   r   )r+   r   r  r   r   r   r   r   r   r   r   r   rJ   r   rW   r   rR   r   rZ   r   r   r   )r3   r   r    r#   r   r;  r@  r   r   r   r   r   r   r   r   r&   r)   s              @@@@@@r   (test_subscribe_multiple_allRegistrationszABaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations  s    	
c3S#sC==?2sD)2sD)C5#t,C5#t,C5#t,C5#t,C:sD1C:sD1C:sD1C:sD1"	 "	H 	..*#779#88: $ 4 4 6		 	++'$*?*?*AB	D H5578
dOdOVS$VS$VS$VS$3Zd#3Zd#3Zd#3Zd#&
 	 MMO	 	'DI&	' 	//1F1FG,,h.@.@A !.%7"!/!/	 $, ..*-1 -	r   )r   ).r
   r   r   maxDiffrb   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   r  r  r  r  r  r  r!  r#  r%  r'  r,  r.  r0  r4  r7  rB  r   r   r   r\   r\   s   s    G#2(2
I2
IP8iV:
)<)EF
500	B*XK5.
'45l3638)?F8""	8@	8sr   r\   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	#CustomTypesBaseAdapterRegistryTestsz
    This class may be extended by other packages to test their own
    adapter registries that use custom types. (So be cautious about
    breaking changes.)

    One known user is ``zope.component.persistentregistry``.
    c                     t         S r/   )rJ   r=   s    r   r   z3CustomTypesBaseAdapterRegistryTests._getMappingType  s    r   c                     t         S r/   )rZ   r=   s    r   r   z4CustomTypesBaseAdapterRegistryTests._getProvidedType      r   c                     t         S r/   )rR   r=   s    r   r   z7CustomTypesBaseAdapterRegistryTests._getMutableListType  rH  r   c                     t         S r/   )rW   r=   s    r   r   z8CustomTypesBaseAdapterRegistryTests._getLeafSequenceType  s    !!r   c                 2     ddl m  G  fdd      }|S )Nr   r^   c                       e Zd ZW j                         ZW j                         ZW j                         ZW j                         Z
d Z fdZy)ZCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistryc                 L    |s| j                         }|j                  |       |S r/   )r   rU   )r3   existing_leaf_sequencenew_items      r   r   zjCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistry._addValueToLeaf  s(    --1-C-C-E*&--h7--r   c                 D    j                  | ||      }||d d  ||vsJ |S r/   )_removeValueFromLeaf)r3   rO  	to_removewithout_removedr_   s       r   rR  zoCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistry._removeValueFromLeaf  s>    "5"J"J*# -<&q) (>>>>--r   N)r
   r   r   r   r   r   r   r   r   r   r   r   rR  )r_   r3   s   r   CustomAdapterRegistryrM    sF    //1L 446M $ 9 9 ; 113M..r   rU  r`   )r3   rU  r_   s   ` @r   rb   z;CustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry  s    >	.$7 	.* %$r   c                 (    | j                  ||       y r/   )r   r	  s      r   r  z6CustomTypesBaseAdapterRegistryTests.assertLeafIdentity  s    eU#r   N)
r
   r   r   __doc__r   r   r   r   rb   r  r   r   r   rE  rE    s%    "%4$r   rE  c                        e Zd Zd ZeZ	 d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 fdZd Zd Zd Zd Zd Z xZ S )LookupBaseFallbackTestsc                     ddl m} |S )Nr   )LookupBaseFallback)ra   r[  )r3   r[  s     r   _getFallbackClassz)LookupBaseFallbackTests._getFallbackClass  s    =!!r   c                 n    d d d  G fdd| j                               } |       S )Nc                      y r/   r   r3   requiredrr   r4   s       r   	uc_lookupz3LookupBaseFallbackTests._makeOne.<locals>.uc_lookup      r   c                     t               r/   NotImplementedErrorr3   r`  rr   s      r   uc_lookupAllz6LookupBaseFallbackTests._makeOne.<locals>.uc_lookupAll      )++r   c                     t               r/   rd  rf  s      r   uc_subscriptionsz:LookupBaseFallbackTests._makeOne.<locals>.uc_subscriptions  rh  r   c                        e Zd ZW  ZW ZW Zy)1LookupBaseFallbackTests._makeOne.<locals>.DerivedN)r
   r   r   _uncached_lookup_uncached_lookupAll_uncached_subscriptions)ra  rg  rj  s   r   Derivedrl    s    (".&6#r   rp  r   )r3   ra  rg  rj  rp  s    ``` r   r   z LookupBaseFallbackTests._makeOne  sN      , #,	7 	7d**, 	7
 yr   c                     d }| j                  |      }| j                  t              5  |j                  ddt	                      d d d        y # 1 sw Y   y xY w)Nc                 &    | j                  d       y NzThis should never be calledr2  r_  s       r   _lookupzCLookupBaseFallbackTests.test_lookup_w_invalid_name.<locals>._lookup      II34r   ra  AB)r   r   r   lookupr|   r3   rt  lbs      r   test_lookup_w_invalid_namez2LookupBaseFallbackTests.test_lookup_w_invalid_name  sN    	5 ]]W]-z* 	-IIfc68,	- 	- 	-   AAc                     g fd}| j                  |      }|j                  ddd      }| j                  |       | j                  dg       y )Nc                 .    j                  |||f       y r/   rU   r3   r`  rr   r4   _called_withs       r   rt  zDLookupBaseFallbackTests.test_lookup_miss_no_default.<locals>._lookup      8T :;r   rv  rw  ry  Crw  ry  r  )r   rz  r  r   r3   rt  r|  foundr  s       @r   test_lookup_miss_no_defaultz3LookupBaseFallbackTests.test_lookup_miss_no_default  sS    	< ]]W]-		&#s+% (:';<r   c                     g t               }fd}| j                  |      }|j                  ddd|      }| j                  ||       | j	                  dg       y )Nc                 .    j                  |||f       y r/   r  r  s       r   rt  zCLookupBaseFallbackTests.test_lookup_miss_w_default.<locals>._lookup  r  r   rv  rw  ry  r  r  r|   r   rz  r   r   r3   _defaultrt  r|  r  r  s        @r   test_lookup_miss_w_defaultz2LookupBaseFallbackTests.test_lookup_miss_w_default  s\    8	< ]]W]-		&#sH5eX&(:';<r   c                    g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }| j                  ||       | j	                  dg       | j	                  ||g       y )Nc                 N    j                  |||f       j                  d      S r6  rU   popr3   r`  rr   r4   r  _resultss       r   rt  z?LookupBaseFallbackTests.test_lookup_not_cached.<locals>._lookup  &    8T :;<<?"r   rv  rw  ry  r  r  r  	r3   abcrt  r|  r  r  r  s	          @@r   test_lookup_not_cachedz.LookupBaseFallbackTests.test_lookup_not_cached  s    (FHfha1q!9	# ]]W]-		&#s+eQ(:';<Aq6*r   c                 @   g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }|j                  ddd      }| j                  ||       | j	                  dg       | j	                  ||g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  z;LookupBaseFallbackTests.test_lookup_cached.<locals>._lookup  r  r   rv  rw  ry  r  r  r  r  s	          @@r   test_lookup_cachedz*LookupBaseFallbackTests.test_lookup_cached  s    (FHfha1q!9	# ]]W]-		&#s+		&#s+eQ(:';<Aq6*r   c                    g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }| j                  ||       | j	                  dg       | j	                  ||g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  zNLookupBaseFallbackTests.test_lookup_not_cached_multi_required.<locals>._lookup  r  r   rv  rx  Dry  r  r  ry  r  r  r  s	          @@r   %test_lookup_not_cached_multi_requiredz=LookupBaseFallbackTests.test_lookup_not_cached_multi_required  s    (FHfha1q!9	# ]]W]-		*c3/eQ(>'?@Aq6*r   c                 @   g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }|j                  ddd      }| j                  ||       | j	                  dg       | j	                  ||g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  zJLookupBaseFallbackTests.test_lookup_cached_multi_required.<locals>._lookup+  r  r   rv  r  ry  r  r  r  r  s	          @@r   !test_lookup_cached_multi_requiredz9LookupBaseFallbackTests.test_lookup_cached_multi_required&  s    (FHfha1q!9	# ]]W]-		*c3/		*c3/eQ(>'?@Aq6*r   c                 b   g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }|j                  |       |j                  ddd      }| j	                  ||       | j                  ddg       | j                  |g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  zMLookupBaseFallbackTests.test_lookup_not_cached_after_changed.<locals>._lookup;  r  r   rv  rw  ry  r  r  )r|   r   rz  rn   r   r   r  s	          @@r   $test_lookup_not_cached_after_changedz<LookupBaseFallbackTests.test_lookup_not_cached_after_changed6  s    (FHfha1q!9	# ]]W]-		&#s+


2		&#s+eQ,.@A	CA3'r   c                     d }| j                  |      }| j                  t              5  |j                  ddt	                      d d d        y # 1 sw Y   y xY w)Nc                 &    | j                  d       y rs  r2  r_  s       r   rt  zDLookupBaseFallbackTests.test_lookup1_w_invalid_name.<locals>._lookupJ  ru  r   rv  rx  ry  )r   r   r   lookup1r|   r{  s      r   test_lookup1_w_invalid_namez3LookupBaseFallbackTests.test_lookup1_w_invalid_nameH  sN    	5 ]]W]-z* 	+JJsC*	+ 	+ 	+r~  c                     g fd}| j                  |      }|j                  ddd      }| j                  |       | j                  dg       y )Nc                 .    j                  |||f       y r/   r  r  s       r   rt  zELookupBaseFallbackTests.test_lookup1_miss_no_default.<locals>._lookupT  r  r   rv  rx  ry  r  r  )r   r  r  r   r  s       @r   test_lookup1_miss_no_defaultz4LookupBaseFallbackTests.test_lookup1_miss_no_defaultQ  sS    	< ]]W]-

3S)% (:';<r   c                     g t               }fd}| j                  |      }|j                  ddd|      }| j                  ||       | j	                  dg       y )Nc                 .    j                  |||f       y r/   r  r  s       r   rt  zDLookupBaseFallbackTests.test_lookup1_miss_w_default.<locals>._lookup`  r  r   rv  rx  ry  r  r  r|   r   r  r   r   r  s        @r   test_lookup1_miss_w_defaultz3LookupBaseFallbackTests.test_lookup1_miss_w_default\  s\    8	< ]]W]-

3S(3eX&(:';<r   c                 
   g t               }fd}| j                  |      }|j                  ddd|      }| j                  ||       |j                  ddd|      }| j                  ||       | j	                  dg       y )Nc                 .    j                  |||f       y r/   r  r  s       r   rt  zSLookupBaseFallbackTests.test_lookup1_miss_w_default_negative_cache.<locals>._lookupl  r  r   rv  rx  ry  r  r  r  r  s        @r   *test_lookup1_miss_w_default_negative_cachezBLookupBaseFallbackTests.test_lookup1_miss_w_default_negative_cacheh  s~    8	< ]]W]-

3S(3eX&

3S(3eX&(:';<r   c                    g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }| j                  ||       | j	                  dg       | j	                  ||g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  z@LookupBaseFallbackTests.test_lookup1_not_cached.<locals>._lookup{  r  r   rv  rx  ry  r  r  r  r  s	          @@r   test_lookup1_not_cachedz/LookupBaseFallbackTests.test_lookup1_not_cachedv  s    (FHfha1q!9	# ]]W]-

3S)eQ(:';<Aq6*r   c                 @   g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }|j                  ddd      }| j                  ||       | j	                  dg       | j	                  ||g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  z<LookupBaseFallbackTests.test_lookup1_cached.<locals>._lookup  r  r   rv  rx  ry  r  r  r  r  s	          @@r   test_lookup1_cachedz+LookupBaseFallbackTests.test_lookup1_cached  s    (FHfha1q!9	# ]]W]-

3S)

3S)eQ(:';<Aq6*r   c                 b   g t               t               t               }}}|||gfd}| j                  |      }|j                  ddd      }|j                  |       |j                  ddd      }| j	                  ||       | j                  ddg       | j                  |g       y )Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  zNLookupBaseFallbackTests.test_lookup1_not_cached_after_changed.<locals>._lookup  r  r   rv  rx  ry  r  r  )r|   r   r  rn   r   r   r  s	          @@r   %test_lookup1_not_cached_after_changedz=LookupBaseFallbackTests.test_lookup1_not_cached_after_changed  s    (FHfha1q!9	# ]]W]-

3S)


2

3S)eQ,.@A	CA3'r   c                     t               t               }}| j                         }| j                  t              5  |j	                  ||t                      d d d        y # 1 sw Y   y xY wr/   )r|   r   r   r   adapter_hook)r3   reqprvr|  s       r    test_adapter_hook_w_invalid_namez8LookupBaseFallbackTests.test_adapter_hook_w_invalid_name  sO    8VXS]]_z* 	0OOCfh/	0 	0 	0s   AA(c                     t               t               }}| j                         }|j                  ||d      }| j                  |       y r   )r|   r   r  r  )r3   r  r  r|  r  s        r   !test_adapter_hook_miss_no_defaultz9LookupBaseFallbackTests.test_adapter_hook_miss_no_default  s:    8VXS]]_S"-% r   c                     t               t               t               }}}| j                         }|j                  ||d|      }| j                  ||       y r   )r|   r   r  r   )r3   r  r  r  r|  r  s         r    test_adapter_hook_miss_w_defaultz8LookupBaseFallbackTests.test_adapter_hook_miss_w_default  sB    #Xvx(S]]_S"h7eX&r   c                     g fdfd}t               t               t               }}}| j                  |      }|j                  ||d|      }| j                  ||       | j	                  |g       y )Nc                 (    j                  |        y r/   r  context_f_called_withs    r   _factoryzTLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None.<locals>._factory  s    !!'*r   c                     S r/   r   r3   r`  rr   r4   r  s       r   rt  zSLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None.<locals>._lookup      Or   rv  r  r|   r   r  r   r   )	r3   rt  r  r  r  r|  adaptedr  r  s	          @@r   *test_adapter_hook_hit_factory_returns_NonezBLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None  sk    	+	 $Xvx(S]]W]-//#sC:gx(#/r   c                 
  	 g t               fd		fd}t               t               t               }}}| j                  |      }|j                  ||d|      }| j                  |       | j	                  |g       y )Nc                 *    j                  |        S r/   r  r  _adapterr  s    r   r  zWLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter.<locals>._factory      !!'*Or   c                     S r/   r   r  s       r   rt  zVLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter.<locals>._lookup  r  r   rv  r  r  
r3   rt  r  r  r  r|  r  r  r  r  s
          @@@r   -test_adapter_hook_hit_factory_returns_adapterzELookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter  r    8		 $Xvx(S]]W]-//#sC:gx(#/r   c                     g fddfd	}t               }t               }| j                  |      }|j                  ||      }| j	                  ||        | j                  | g       y )Nc                 *    j                  |        | S r/   r  r  s    r   r  zILookupBaseFallbackTests.test_adapter_hook_super_unwraps.<locals>._factory  s    !!'*Nr   c                     S r/   r   r  s       r   rt  zHLookupBaseFallbackTests.test_adapter_hook_super_unwraps.<locals>._lookup  r  r   rv  )r   )superr|   r   r  r   r   )	r3   rt  r`  rr   r|  r  r  r  	__class__s	         @@r   test_adapter_hook_super_unwrapsz7LookupBaseFallbackTests.test_adapter_hook_super_unwraps  sb    		 78]]W]-//(H5gt$$0r   c                 
  	 g t               fd		fd}t               t               t               }}}| j                  |      }|j                  ||d|      }| j                  |       | j	                  |g       y )Nc                 *    j                  |        S r/   r  r  s    r   r  z;LookupBaseFallbackTests.test_queryAdapter.<locals>._factory  r  r   c                     S r/   r   r  s       r   rt  z:LookupBaseFallbackTests.test_queryAdapter.<locals>._lookup  r  r   rv  r  )r|   r   queryAdapterr   r   r  s
          @@@r   test_queryAdapterz)LookupBaseFallbackTests.test_queryAdapter  r  r   c                     g t               t               t               gfd}| j                  |      }|j                  dd      }| j                  |t	                     | j                  dg       y )Nc                 @    j                  ||f       t              S r/   rU   ru   r3   r`  rr   r  r  s      r   
_lookupAllzCLookupBaseFallbackTests.test_lookupAll_uncached.<locals>._lookupAll       8 45?"r   rg  rx  ry  rw  ry  r|   r   	lookupAllr   ru   r3   r  r|  r  r  r  s       @@r   test_lookupAll_uncachedz/LookupBaseFallbackTests.test_lookupAll_uncached  sg    Hfh1	# ]]
]3S#&h07r   c                    g t               t               t               gfd}| j                  |      }|j                  dd      }|j                  dd      }| j                  |t	                     | j                  dg       y )Nc                 @    j                  ||f       t              S r/   r  r  s      r   r  zALookupBaseFallbackTests.test_lookupAll_cached.<locals>._lookupAll  r  r   r  rx  ry  r  r  r  s       @@r   test_lookupAll_cachedz-LookupBaseFallbackTests.test_lookupAll_cached  sw    Hfh1	# ]]
]3S#&S#&h07r   c                     g t               t               t               gfd}| j                  |      }|j                  dd      }| j                  |t	                     | j                  dg       y )Nc                 @    j                  ||f       t              S r/   r  r  s      r   _subscriptionszKLookupBaseFallbackTests.test_subscriptions_uncached.<locals>._subscriptions  r  r   rj  rx  ry  r  r|   r   subscriptionsr   ru   r3   r  r|  r  r  r  s       @@r   test_subscriptions_uncachedz3LookupBaseFallbackTests.test_subscriptions_uncached  si    Hfh1	# ]]N];  c*h07r   c                    g t               t               t               gfd}| j                  |      }|j                  dd      }|j                  dd      }| j                  |t	                     | j                  dg       y )Nc                 @    j                  ||f       t              S r/   r  r  s      r   r  zILookupBaseFallbackTests.test_subscriptions_cached.<locals>._subscriptions'  r  r   r  rx  ry  r  r  r   s       @@r   test_subscriptions_cachedz1LookupBaseFallbackTests.test_subscriptions_cached#  s{    Hfh1	# ]]N];  c*  c*h07r   NNN)!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  r  r  r  r  r  r  r  __classcell__r  s   @r   rY  rY    s    " (O CG4-	=
=++ ++ ($+	=
==++ ($0!'00"1"0"8888r   rY  c                       e Zd Zd Zy)LookupBaseTestsc                     ddl m} |S )Nr   )
LookupBase)ra   r  )r3   r  s     r   r}   zLookupBaseTests._getTargetClass5  s    5r   Nr
   r   r   r}   r   r   r   r	  r	  2  s    r   r	  c                   L    e Zd Zd ZeZ	 	 ddZd Zd Zd Zd Z	d Z
d	 Zd
 Zy)VerifyingBaseFallbackTestsc                     ddl m} |S )Nr   )VerifyingBaseFallback)ra   r  )r3   r  s     r   r\  z,VerifyingBaseFallbackTests._getFallbackClass<  s    @$$r   Nc                     d d d  G fdd| j                               } ||      }|j                  |       |S )Nc                     t               r/   rd  r_  s       r   ra  z6VerifyingBaseFallbackTests._makeOne.<locals>.uc_lookupG  rh  r   c                     t               r/   rd  rf  s      r   rg  z9VerifyingBaseFallbackTests._makeOne.<locals>.uc_lookupAllL  rh  r   c                     t               r/   rd  rf  s      r   rj  z=VerifyingBaseFallbackTests._makeOne.<locals>.uc_subscriptionsQ  rh  r   c                   2     e Zd ZW ZW ZW Z fdZ xZS )4VerifyingBaseFallbackTests._makeOne.<locals>.Derivedc                 0    t         |           || _        y r/   )r  rO   	_registry)r3   r   r  s     r   rO   z=VerifyingBaseFallbackTests._makeOne.<locals>.Derived.__init__Y  s     "!)r   )r
   r   r   rm  rn  ro  rO   r  )r  ra  rg  rj  s   @r   rp  r  T  s    (".&6#* *r   rp  )r}   rn   )r3   r   ra  rg  rj  rp  deriveds     ```  r   r   z#VerifyingBaseFallbackTests._makeOneB  sa     , , #,	* 	*d**, 	* (# r   c                 @     G d d       G fdd      } ||      S )Nc                       e Zd ZdZy)@VerifyingBaseFallbackTests._makeRegistry.<locals>.WithGenerationr   N)r
   r   r   r   r   r   r   WithGenerationr  c  s    Kr   r  c                       e Zd Z fdZy):VerifyingBaseFallbackTests._makeRegistry.<locals>.Registryc                 V    t        |      D cg c]	  }         c}| _        y c c}w r/   )rangero)r3   depthir  s      r   rO   zCVerifyingBaseFallbackTests._makeRegistry.<locals>.Registry.__init__g  s    5:5\B>+BBs   &NrP   )r  s   r   Registryr  f  s	    Cr   r%  r   )r3   r#  r%  r  s      @r   _makeRegistryz(VerifyingBaseFallbackTests._makeRegistrya  s%    	 		C 	C r   c                 @  	 g t               t               t               }}}|||g		fd}| j                  d      }| j                  ||      }|j                  ddd      }|j                  ddd      }| j	                  ||       | j                  dg       | j                  	||g       |j                  d   xj                  dz  c_        |j                  ddd      }| j	                  ||       | j                  ddg       | j                  	|g       y )	Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  z7VerifyingBaseFallbackTests.test_lookup.<locals>._lookupq  r  r   r   rv  rw  ry  r  r  r   )r|   r&  r   rz  r   r   r"  r   
r3   r  r  r  rt  ri   r|  r  r  r  s
           @@r   test_lookupz&VerifyingBaseFallbackTests.test_lookupl  s   (FHfha1q!9	#   #]]3']2		&#s+		&#s+eQ(:';<Aq6*q	"		&#s+eQ,.@A	CA3'r   c                 @  	 g t               t               t               }}}|||g		fd}| j                  d      }| j                  ||      }|j                  ddd      }|j                  ddd      }| j	                  ||       | j                  dg       | j                  	||g       |j                  d   xj                  dz  c_        |j                  ddd      }| j	                  ||       | j                  ddg       | j                  	|g       y )	Nc                 N    j                  |||f       j                  d      S r6  r  r  s       r   rt  z8VerifyingBaseFallbackTests.test_lookup1.<locals>._lookup  r  r   r   rv  rx  ry  r  r  r   )r|   r&  r   r  r   r   r"  r   r)  s
           @@r   test_lookup1z'VerifyingBaseFallbackTests.test_lookup1  s   (FHfha1q!9	#   #]]3']2

3S)

3S)eQ(:';<Aq6*q	"

3S)eQ,.@A	CA3'r   c                 ,    t               t               t               g\  }fd}fd} fd}|||gfd}t               t               t               }}} j                  d      }	 j                  |	|      }
|
j                  ||d|      } j	                  |       |
j                  ||d|      } j	                  |       |	j
                  d   xj                  dz  c_        |
j                  ||d|      } j	                  |       y )	Nc                     S r/   r   r  r  s    r   	_factory1z?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory1      Hr   c                     S r/   r   r  r  s    r   	_factory2z?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory2  r2  r   c                 (    j                  d       y rs  r2  r  r3   s    r   	_factory3z?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory3      II34r   c                 &    j                  d      S r6  r  r3   r`  rr   r4   
_factoriess       r   rt  z=VerifyingBaseFallbackTests.test_adapter_hook.<locals>._lookup      >>!$$r   r   rv  r  r   )r|   r&  r   r  r   r"  r   r3   _cr1  r5  r8  rt  r  r  r  ri   r|  r  r=  r  r  s   `           @@@r   test_adapter_hookz,VerifyingBaseFallbackTests.test_adapter_hook      Hfh11b			5  I6
	% $Xvx(S  #]]3']2//#sC:gq!//#sC:gq!q	"//#sC:gq!r   c                 ,    t               t               t               g\  }fd}fd} fd}|||gfd}t               t               t               }}} j                  d      }	 j                  |	|      }
|
j                  ||d|      } j	                  |       |
j                  ||d|      } j	                  |       |	j
                  d   xj                  dz  c_        |
j                  ||d|      } j	                  |       y )	Nc                     S r/   r   r0  s    r   r1  z?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory1  r2  r   c                     S r/   r   r4  s    r   r5  z?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory2  r2  r   c                 (    j                  d       y rs  r2  r7  s    r   r8  z?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory3  r9  r   c                 &    j                  d      S r6  r;  r<  s       r   rt  z=VerifyingBaseFallbackTests.test_queryAdapter.<locals>._lookup  r>  r   r   rv  r  r   )r|   r&  r   r  r   r"  r   r  r?  s   `           @@@r   r  z,VerifyingBaseFallbackTests.test_queryAdapter  rB  r   c                 &   t               t               t               g}t               t               t               g}||gfd}| j                  d      }| j                  ||      }|j                  dd      }| j	                  |t        |             |j                  dd      }| j	                  |t        |             |j                  d   xj                  dz  c_        |j                  dd      }| j	                  |t        |             y )Nc                 8    t        j                  d            S r6  ru   r  r3   r`  rr   r  s      r   r  z=VerifyingBaseFallbackTests.test_lookupAll.<locals>._lookupAll      a))r   r   r  rx  ry  r   )r|   r&  r   r  r   ru   r"  r   )r3   
_results_1
_results_2r  ri   r|  r  r  s          @r   test_lookupAllz)VerifyingBaseFallbackTests.test_lookupAll  s    h&(3
h&(3

+	*   #]]3Z]8S#&j 12S#&j 12q	"S#&j 12r   c                 &   t               t               t               g}t               t               t               g}||gfd}| j                  d      }| j                  ||      }|j                  dd      }| j	                  |t        |             |j                  dd      }| j	                  |t        |             |j                  d   xj                  dz  c_        |j                  dd      }| j	                  |t        |             y )Nc                 8    t        j                  d            S r6  rJ  rK  s      r   r  zEVerifyingBaseFallbackTests.test_subscriptions.<locals>._subscriptions  rL  r   r   r  rx  ry  r   )r|   r&  r   r  r   ru   r"  r   )r3   rM  rN  r  ri   r|  r  r  s          @r   test_subscriptionsz-VerifyingBaseFallbackTests.test_subscriptions  s    h&(3
h&(3

+	*   #]]3]@  c*j 12  c*j 12q	"  c*j 12r   r  )r
   r   r   r\  r}   r   r&  r*  r-  rA  r  rO  rR  r   r   r   r  r  :  s<    % (O>B"&>	(.(."8"83$3r   r  c                       e Zd Zd Zy)VerifyingBaseTestsc                     ddl m} |S )Nr   )VerifyingBase)ra   rV  )r3   rV  s     r   r}   z"VerifyingBaseTests._getTargetClass  s    8r   Nr  r   r   r   rT  rT    s    r   rT  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 f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' xZ(S )&AdapterLookupBaseTestsc                     ddl m} |S )Nr   )AdapterLookupBase)ra   rZ  )r3   rZ  s     r   r}   z&AdapterLookupBaseTests._getTargetClass  s    <  r   c                 .     | j                         |      S r/   r   r   s     r   r   zAdapterLookupBaseTests._makeOne  s    %t##%h//r   c                 $     G d d      } |       S )Nc                       e Zd Zd Zy)<AdapterLookupBaseTests._makeSubregistry.<locals>.Subregistryc                      g | _         g | _        y r/   )r   r   r=   s    r   rO   zEAdapterLookupBaseTests._makeSubregistry.<locals>.Subregistry.__init__  s    !#$&!r   NrP   r   r   r   Subregistryr^  
  s    'r   r`  r   )r3   rr   r`  s      r   _makeSubregistryz'AdapterLookupBaseTests._makeSubregistry  s    	' 	'
 }r   c                 &     G d d      } ||      S )Nc                       e Zd Zd Zy)6AdapterLookupBaseTests._makeRegistry.<locals>.Registryc                      || _         g | _        y r/   )r   r"  rq   s     r   rO   z?AdapterLookupBaseTests._makeRegistry.<locals>.Registry.__init__  s    !)r   NrP   r   r   r   r%  rd    s    r   r%  r   )r3   rr   r%  s      r   r&  z$AdapterLookupBaseTests._makeRegistry  s    	 	
 !!r   c                 ~    | j                         }| j                  |      }| j                  |j                  i        y r/   )r&  r   r   rp   )r3   r   albs      r   test_ctor_empty_registryz/AdapterLookupBaseTests.test_ctor_empty_registry  s2    %%'mmH%,r   c                    ddl m} ddlm}  |d      } |d|f      }| j	                  ||      }| j                  |      }| j                  t        |j                  j                               t        |||g             | j                  |j                  |   ||g       | j                  |j                  |   |g       | j                  t        |j                  |         t        ||g             y Nr   r   InterfaceClassIFooIBar)
r*   r   zope.interface.interfacerl  r&  r   r   r   rp   keysr3   r   rl  rm  rn  r   rg  s          r   test_ctor_w_registry_providedz4AdapterLookupBaseTests.test_ctor_w_registry_provided  s    ,;f%ftg.%%dD1mmH% 3 3 56tY 78	:-d|<-v6y 9:t-	/r   c                      G d d      } G d d| j                         |      }| j                         } ||      }|j                  |       y )Nc                       e Zd Zd Zy)AAdapterLookupBaseTests.test_changed_empty_required.<locals>.Mixinc                      y r/   r   rC   s     r   rn   zIAdapterLookupBaseTests.test_changed_empty_required.<locals>.Mixin.changed1  rb  r   Nr
   r   r   rn   r   r   r   Mixinru  0      r   rx  c                       e Zd Zy)CAdapterLookupBaseTests.test_changed_empty_required.<locals>.DerivedNr	   r   r   r   rp  r{  4  r   r   rp  )r}   r&  rn   )r3   rx  rp  r   rg  s        r   test_changed_empty_requiredz2AdapterLookupBaseTests.test_changed_empty_required-  sI    	 		d**,e 	 %%'hCr   c                     G d d      } G d d| j                         |      } G d d      } |d      } |d      }| j                         } ||      }d	|j                  |<   d	|j                  |<   |j                  |       | j	                  t        |j                        d
       | j	                  |j                  d        | j	                  |j                  |       y )Nc                       e Zd Zd Zy)=AdapterLookupBaseTests.test_changed_w_required.<locals>.Mixinc                      y r/   r   rC   s     r   rn   zEAdapterLookupBaseTests.test_changed_w_required.<locals>.Mixin.changed?  rb  r   Nrw  r   r   r   rx  r  >  ry  r   rx  c                       e Zd Zy)?AdapterLookupBaseTests.test_changed_w_required.<locals>.DerivedNr	   r   r   r   rp  r  B  r   r   rp  c                   "    e Zd ZdZd Zd Zd Zy)CAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakrefNc                     || _         y r/   _here)r3   heres     r   rO   zLAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.__init__H  s	    !
r   c                 "    | j                   r| S d S r/   r  r=   s    r   __call__zLAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.__call__K  s    #zzt3t3r   c                     || _         y r/   )_unsub)r3   targets     r   r  zOAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.unsubscribeN  s	    $r   )r
   r   r   r  rO   r  r  r   r   r   FauxWeakrefr  E  s    F"4%r   r  FTr   r   )r}   r&  	_requiredrn   r   r<   r  )r3   rx  rp  r  goner  r   rg  s           r   test_changed_w_requiredz.AdapterLookupBaseTests.test_changed_w_required;  s    	 		d**,e 	
	% 
	% 5!4 %%'hddCS]]+Q/d+c*r   c                    ddl m} ddlm}  |d      } |d|f      }| j	                         }| j                  |      }||g|_        |j                          | j                  t        |j                  j                               t        |||g             | j                  |j                  |   ||g       | j                  |j                  |   |g       | j                  t        |j                  |         t        ||g             y rj  )r*   r   ro  rl  r&  r   r   init_extendorsr   r   rp   rp  rq  s          r   )test_init_extendors_after_registry_updatez@AdapterLookupBaseTests.test_init_extendors_after_registry_update\  s    ,;f%ftg.%%'mmH%"D\ 3 3 56tY 78	:-d|<-v6y 9:t-	/r   c                 ,   ddl m} ddlm}  |d      } |d|f      }| j	                         }| j                  |      }|j                  |       |j                  |       | j                  t        |j                  j                               t        |||g             | j                  |j                  |   ||g       | j                  |j                  |   |g       | j                  t        |j                  |         t        ||g             y rj  )r*   r   ro  rl  r&  r   rs   r   r   rp   rp  rq  s          r   test_add_extendorz(AdapterLookupBaseTests.test_add_extendorl  s    ,;f%ftg.%%'mmH% 3 3 56tY 78	:-d|<-v6y 9:t-	/r   c                 
   ddl m} ddlm}  |d      } |d|f      }| j	                  ||      }| j                  |      }|j                  |       | j                  t        |j                  j                               t        |||g             | j                  |j                  |   |g       | j                  |j                  |   |g       | j                  t        |j                  |         t        |g             y rj  )r*   r   ro  rl  r&  r   rw   r   r   rp   rp  rq  s          r   test_remove_extendorz+AdapterLookupBaseTests.test_remove_extendor|  s    ,;f%ftg.%%dD1mmH%D! 3 3 56tY 78	:-v6-v6y 9:	)r   c                 ^   ddl m}  |d      } |d|f      }| j                         }| j                  |      }|j	                  |f|      }| j                  |d        | j                  t        |j                        d       | j                  |j                         |j                         y Nr   rk  rm  rn  r   )
ro  rl  r&  r   rm  r   r<   r  r   weakrefr3   rl  rm  rn  r   rg  results          r   test__uncached_lookup_empty_roz5AdapterLookupBaseTests.test__uncached_lookup_empty_ro  s    ;f%ftg.%%'mmH%%%tgt4&S]]+Q/dllncmm4r   c                    ddl m}  |d      } |d|f      }| j                  ||      }| j                         }|j                  j                  |       | j                  |      }|j                  |f|      }| j                  |d        y Nr   rk  rm  rn  )	ro  rl  r&  ra  r"  rU   r   rm  r   r3   rl  rm  rn  r   subrrg  r  s           r    test__uncached_lookup_order_missz7AdapterLookupBaseTests.test__uncached_lookup_order_miss  s    ;f%ftg.%%dD1$$&4 mmH%%%tgt4&r   c                 6   ddl m}  |d      } |d|f      }| j                         }| j                         }i i g|_        |j
                  j                  |       | j                  |      }||_        |j                  |f|      }| j                  |d        y r  )ro  rl  r&  ra  r   r"  rU   r   r   rm  r   r  s           r   $test__uncached_lookup_extendors_missz;AdapterLookupBaseTests.test__uncached_lookup_extendors_miss  s    ;f%ftg.%%'$$&b4 mmH%%%tgt4&r   c                 j   ddl m}  |d      } |d|f      } |d      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }	| j                  |	d        y Nr   rk  rm  rn  IQuxr   ro  rl  r&  ra  r|   r   r"  rU   r   r   rm  r   
r3   rl  rm  rn  r  r   r  
irrelevantrg  r  s
             r   1test__uncached_lookup_components_miss_wrong_ifacezHAdapterLookupBaseTests.test__uncached_lookup_components_miss_wrong_iface  s    ;f%ftg.f%%%dD1$$&X
2z*
 	4 mmH%%%tgt4&r   c                 Z   ddl m}  |d      } |d|f      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }| j                  |d        y Nr   rk  rm  rn  	wrongnamer  	r3   rl  rm  rn  r   r  r  rg  r  s	            r   0test__uncached_lookup_components_miss_wrong_namezGAdapterLookupBaseTests.test__uncached_lookup_components_miss_wrong_name  s    ;f%ftg.%%dD1$$&H	;	2
 	4 mmH%%%tgt4&r   c                 Z   ddl m}  |d      } |d|f      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }| j                  ||       y Nr   rk  rm  rn  r   ro  rl  r&  ra  r|   r   r"  rU   r   r   rm  r   )	r3   rl  rm  rn  r   r  	_expectedrg  r  s	            r    test__uncached_lookup_simple_hitz7AdapterLookupBaseTests.test__uncached_lookup_simple_hit  s    ;f%ftg.%%dD1$$&H	D2y/*+
 	4 mmH%%%tgt4fi(r   c                    ddl m}  |d      } |d|f      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }|j                  |f|      }	| j                  ||       | j                  |	|       y r  r  )
r3   rl  rm  rn  r   r  r  rg  r  result2s
             r   "test__uncached_lookup_repeated_hitz9AdapterLookupBaseTests.test__uncached_lookup_repeated_hit  s    ;f%ftg.%%dD1$$&H	D2y/*+
 	4 mmH%%%tgt4&&w5fi(gy)r   c                    ddl m} ddlm}  |d      } |d|f      } ||       G d d             } |       }| j	                         }| j                         }i i g|_        |j                  j                  |       | j                  |      }	|	j                  |	_        |	|_        t               }
|	j                  |f||
      }| j                  ||
       y )	Nr   implementerrk  rm  rn  c                       e Zd Zy)FAdapterLookupBaseTests.test_queryMultiAdaptor_lookup_miss.<locals>.FooNr	   r   r   r   Foor        r   r  default)zope.interface.declarationsr  ro  rl  r&  ra  r   r"  rU   r   rm  rz  r   r|   queryMultiAdapterr   )r3   r  rl  rm  rn  r  foor   r  rg  r  r  s               r   "test_queryMultiAdaptor_lookup_missz9AdapterLookupBaseTests.test_queryMultiAdaptor_lookup_miss   s    ;;f%ftg.	T		 	 
	 e%%'$$&
 	4 mmH%))
8&&vtX&Ffh'r   c                     ddl m} ddlm}  |d      | j	                         }| j                  |      j                  _        fd}|j                  | |d       y )Nr   rk  )MissingSomeAttrsrm  c                 *    j                  | f      S r/   )r  )obrm  rg  s    r   testzVAdapterLookupBaseTests.test_queryMultiAdapter_errors_on_attribute_access.<locals>.test'  s    (( r   r  )expected_missing)	ro  rl  zope.interface.testsr  r&  r   rm  rz  test_raises)r3   rl  r  r   r  rm  rg  s        @@r   1test_queryMultiAdapter_errors_on_attribute_accesszHAdapterLookupBaseTests.test_queryMultiAdapter_errors_on_attribute_access  sZ     	<9f%%%'mmH%))
	 	$$T4+$Nr   c                    ddl m} ddlm}  |d      } |d|f      } ||       G d d             } |       }| j	                  ||      }| j                         }g fd}	i ||d	|	iiig|_        |j                  j                  |       | j                  |      }
|
j                  |
_        |
|_        t               }|
j                  |f||
      }| j                  ||       | j!                  |g       y )Nr   r  rk  rm  rn  c                       e Zd Zy)GAdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss.<locals>.FooNr	   r   r   r   r  r  5  r  r   r  c                 (    j                  |        y r/   r  )r  r  s    r   r  zLAdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss.<locals>._factory>  s    (r   r   r  )r  r  ro  rl  r&  ra  r   r"  rU   r   rm  rz  r   r|   r  r   r   )r3   r  rl  rm  rn  r  r  r   r  r  rg  r  r  r  s                @r   #test_queryMultiAdaptor_factory_missz:AdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss/  s   ;;f%ftg.	T		 	 
	 e%%dD1$$&	) D2x.)*
 	4 mmH%))
8&&vtX&Ffh'u-r   c                    ddl m} ddlm}  |d      } |d|f      } ||       G d d             } |       }| j	                  ||      }| j                         }t               g fd}	i ||d	|	iiig|_        |j                  j                  |       | j                  |      }
|
j                  |
_        |
|_        t               }|
j                  |f||
      }| j                  |       | j!                  |g       y )Nr   r  rk  rm  rn  c                       e Zd Zy)FAdapterLookupBaseTests.test_queryMultiAdaptor_factory_hit.<locals>.FooNr	   r   r   r   r  r  T  r  r   r  c                 *    j                  |        S r/   r  )r  r  r  s    r   r  zKAdapterLookupBaseTests.test_queryMultiAdaptor_factory_hit.<locals>._factory^  s    (r   r   r  )r  r  ro  rl  r&  ra  r|   r   r"  rU   r   rm  rz  r   r  r   r   )r3   r  rl  rm  rn  r  r  r   r  r  rg  r  r  r  r  s                @@r   "test_queryMultiAdaptor_factory_hitz9AdapterLookupBaseTests.test_queryMultiAdaptor_factory_hitN  s   ;;f%ftg.	T		 	 
	 e%%dD1$$&H		
 D2x.)*
 	4 mmH%))
8&&vtX&Ffi(u-r   c                     | j                  | j                               }fd}d ||_        t               ddt               g}|j	                  |d       }| j                  || dd| f       y )Nc                      S r/   r   )r   factorys    r   rz  zKAdapterLookupBaseTests.test_queryMultiAdapter_super_unwraps.<locals>.lookupr  s    Nr   c                      | S r/   r   )r   s    r   r  zLAdapterLookupBaseTests.test_queryMultiAdapter_super_unwraps.<locals>.factoryu  s    Kr   *   abc)r   r&  rz  r  r  r   )r3   rg  rz  objectsr  r  r  s        @r   $test_queryMultiAdapter_super_unwrapsz;AdapterLookupBaseTests.test_queryMultiAdapter_super_unwrapso  s{    mmD..01		 
 GG	
 &&w5	"
 	r   c                 ^   ddl m}  |d      } |d|f      }| j                         }| j                  |      }|j	                  |f|      }| j                  |d       | j                  t        |j                        d       | j                  |j                         |j                         y )Nr   rk  rm  rn  r   r   )
ro  rl  r&  r   rn  r   r<   r  r   r  r  s          r   !test__uncached_lookupAll_empty_roz8AdapterLookupBaseTests.test__uncached_lookupAll_empty_ro  s    ;f%ftg.%%'mmH%(($$7$S]]+Q/dllncmm4r   c                 (   ddl m}  |d      } |d|f      }| j                  ||      }| j                         }|j                  j                  |       | j                  |      }||_        |j                  |f|      }| j                  |d       y Nr   rk  rm  rn  r   )
ro  rl  r&  ra  r"  rU   r   r   rn  r   r  s           r   #test__uncached_lookupAll_order_missz:AdapterLookupBaseTests.test__uncached_lookupAll_order_miss  s    ;f%ftg.%%dD1$$&4 mmH%(($$7$r   c                 6   ddl m}  |d      } |d|f      }| j                         }| j                         }i i g|_        |j
                  j                  |       | j                  |      }||_        |j                  |f|      }| j                  |d       y r  )ro  rl  r&  ra  r   r"  rU   r   r   rn  r   r  s           r   'test__uncached_lookupAll_extendors_missz>AdapterLookupBaseTests.test__uncached_lookupAll_extendors_miss  s    ;f%ftg.%%'$$&b4 mmH%(($$7$r   c                 j   ddl m}  |d      } |d|f      } |d      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }	| j                  |	d       y )Nr   rk  rm  rn  r  r   r   )ro  rl  r&  ra  r|   r   r"  rU   r   r   rn  r   r  s
             r   (test__uncached_lookupAll_components_missz?AdapterLookupBaseTests.test__uncached_lookupAll_components_miss  s    ;f%ftg.f%%%dD1$$&X
D2z*+,
 	4 mmH%(($$7$r   c                    ddl m}  |d      } |d|f      }| j                  ||      }| j                         }t	               }t	               }i ||||diig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }	| j                  t        |	      d|fd|fg       y Nr   rk  rm  rn  )r   namedr   r  )ro  rl  r&  ra  r|   r   r"  rU   r   r   rn  r   r   
r3   rl  rm  rn  r   r  r  _namedrg  r  s
             r   #test__uncached_lookupAll_simple_hitz:AdapterLookupBaseTests.test__uncached_lookupAll_simple_hit  s    ;f%ftg.%%dD1$$&H	Dy6:;<
 	4 mmH%(($$72y/GV;L)MNr   c                    ddl m}  |d      } |d|f      }| j                  ||      }| j                         }t	               }t	               }i ||||diig|_        |j                  j                  |       | j                  |      }|j                  |_
        ||_        |j                  |f|      }	| j                  t        |	      ddg       y r  )ro  rl  r&  ra  r|   r   r"  rU   r   rn  r  r   namesr   r   r  s
             r   
test_namesz!AdapterLookupBaseTests.test_names  s    ;f%ftg.%%dD1$$&H	Dy6:;<
 	4 mmH%//D7D)"g7r   c                 ^   ddl m}  |d      } |d|f      }| j                         }| j                  |      }|j	                  |f|      }| j                  |g        | j                  t        |j                        d       | j                  |j                         |j                         y r  )
ro  rl  r&  r   ro  r   r<   r  r   r  r  s          r   %test__uncached_subscriptions_empty_roz<AdapterLookupBaseTests.test__uncached_subscriptions_empty_ro  s    ;f%ftg.%%'mmH%,,dWd;$S]]+Q/dllncmm4r   c                 (   ddl m}  |d      } |d|f      }| j                  ||      }| j                         }|j                  j                  |       | j                  |      }||_        |j                  |f|      }| j                  |g        y r  )
ro  rl  r&  ra  r"  rU   r   r   ro  r   r  s           r   'test__uncached_subscriptions_order_missz>AdapterLookupBaseTests.test__uncached_subscriptions_order_miss  s    ;f%ftg.%%dD1$$&4 mmH%,,dWd;$r   c                 6   ddl m}  |d      } |d|f      }| j                         }| j                         }i i g|_        |j
                  j                  |       | j                  |      }||_        |j                  |f|      }| j                  |g        y r  )ro  rl  r&  ra  r   r"  rU   r   r   ro  r   r  s           r   +test__uncached_subscriptions_extendors_misszBAdapterLookupBaseTests.test__uncached_subscriptions_extendors_miss  s    ;f%ftg.%%'$$&H4 mmH%,,dWd;$r   c                 j   ddl m}  |d      } |d|f      } |d      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }	| j                  |	g        y r  ro  rl  r&  ra  r|   r   r"  rU   r   r   ro  r   r  s
             r   8test__uncached_subscriptions_components_miss_wrong_ifacezOAdapterLookupBaseTests.test__uncached_subscriptions_components_miss_wrong_iface  s    ;f%ftg.f%%%dD1$$&X
D2z*+,
 	4 mmH%,,dWd;$r   c                 Z   ddl m}  |d      } |d|f      }| j                  ||      }| j                         }t	               }i ||d|iiig|_        |j                  j                  |       | j                  |      }||_	        |j                  |f|      }| j                  |g        y r  r  r  s	            r   7test__uncached_subscriptions_components_miss_wrong_namezNAdapterLookupBaseTests.test__uncached_subscriptions_components_miss_wrong_name  s    ;f%ftg.%%dD1$$&H	D;	234
 	4 mmH%,,dWd;$r   c                    ddl m}  |d      } |d|f      }| j                  ||      }| j                         } G d d      } |        |       }}i ||d||fiiig|_        |j
                  j                  |       | j                  |      }	|	|_        |	j                  |f|      }
| j                  t        |
      t        ||g             y )Nr   rk  rm  rn  c                       e Zd Zd Zy)KAdapterLookupBaseTests.test__uncached_subscriptions_simple_hit.<locals>.Fooc                      y)NTr   rC   s     r   __lt__zRAdapterLookupBaseTests.test__uncached_subscriptions_simple_hit.<locals>.Foo.__lt__4  s    r   N)r
   r   r   r  r   r   r   r  r  2  s    r   r  r   )ro  rl  r&  ra  r   r"  rU   r   r   ro  r   r   )r3   rl  rm  rn  r   r  r  _exp1_exp2rg  r  s              r   'test__uncached_subscriptions_simple_hitz>AdapterLookupBaseTests.test__uncached_subscriptions_simple_hit+  s    ;f%ftg.%%dD1$$&	 	
 uceuD2u~./0
 	4 mmH%,,dWd;)?@r   c                    ddl m} ddlm}  |d      } |d|f      } ||       G d d             } |       }| j	                  ||      }| j	                  ||      }| j                         }i fd}	fd	}
i |d d
|	|
fiiig|_        |j                  j                  |       | j                  |      }|j                  |_        ||_        |j                  |fd       }| j                  |d       | j                  |g|gd       y )Nr   r  rk  rm  rn  c                       e Zd Zy)@AdapterLookupBaseTests.test_subscribers_wo_provided.<locals>.FooNr	   r   r   r   r  r	  H  r  r   r  c                 H    j                  dg       j                  |        y Nr1  
setdefaultrU   r  _calleds    r   r1  zFAdapterLookupBaseTests.test_subscribers_wo_provided.<locals>._factory1R      {B/66w?r   c                 H    j                  dg       j                  |        y Nr5  r  r  s    r   r5  zFAdapterLookupBaseTests.test_subscribers_wo_provided.<locals>._factory2U  r  r   r   r   )r1  r5  )r  r  ro  rl  r&  ra  r   r"  rU   r   ro  r  r   subscribersr   )r3   r  rl  rm  rn  r  r  r   r  r1  r5  rg  r  r  s                @r   test_subscribers_wo_providedz3AdapterLookupBaseTests.test_subscribers_wo_providedB  s!   ;;f%ftg.	T		 	 
	 e%%dD1%%dD1$$&	@	@ D2	95678
 	4 mmH%77#.$SE"JKr   c                 b   ddl m} ddlm}  |d      } |d|f      } ||       G d d             } |       }| j	                  ||      }| j	                  ||      }| j                         }i t               t               cfd}	fd	}
fd
}i ||d|	|
|fiiig|_        |j                  j                  |       | j                  |      }|j                  |_        ||_        |j                  |f|      }| j                  |g       | j                  |g|g|gd       y )Nr   r  rk  rm  rn  c                       e Zd Zy)?AdapterLookupBaseTests.test_subscribers_w_provided.<locals>.FooNr	   r   r   r   r  r  j  r  r   r  c                 J    j                  dg       j                  |        S r  r  )r  r  r  s    r   r1  zEAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._factory1u  #    {B/66w?Lr   c                 J    j                  dg       j                  |        S r  r  )r  r  r  s    r   r5  zEAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._factory2y  r  r   c                 H    j                  dg       j                  |        y )N_side_effect_onlyr  r  s    r   r  zMAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._side_effect_only}  s    2B7>>wGr   r   )r1  r5  r  )r  r  ro  rl  r&  ra  r|   r   r"  rU   r   ro  r  r   r  r   )r3   r  rl  rm  rn  r  r  r   r  r1  r5  r  rg  r  r  r  r  s                 @@@r   test_subscribers_w_providedz2AdapterLookupBaseTests.test_subscribers_w_providedd  sG   ;;f%ftg.	T		 	 
	 e%%dD1%%dD1$$&xu			H D2	96GHIJK
 	4 mmH%77#.%0!U!U&)U	
r   ))r
   r   r   r}   r   ra  r&  rh  rr  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  r  r  r  r  r  r  r  r  s   @r   rX  rX    s    !0"-
/+B/ / )"	5	''',',)"*&(2O,.>.B4	5
%%%$O$8&	5
%%%$%"A. LD,
r   rX  c                       e Zd Zd Zd Zd Zy)VerifyingAdapterRegistryTestsc                     ddl m} |S )Nr   )VerifyingAdapterRegistry)ra   r!  )r3   r!  s     r   r}   z-VerifyingAdapterRegistryTests._getTargetClass  s    C''r   c                 .     | j                         |i |S r/   r   )r3   r   kws      r   r   z&VerifyingAdapterRegistryTests._makeOne  s    %t##%t2r22r   c                 N    ddl m} ddlm} | j	                         } |||       y )Nr   )IAdapterRegistry)verifyObject)zope.interface.interfacesr%  zope.interface.verifyr&  r   )r3   r%  r&  r   s       r   ,test_verify_object_provides_IAdapterRegistryzJVerifyingAdapterRegistryTests.test_verify_object_provides_IAdapterRegistry  s    >6==?%x0r   N)r
   r   r   r}   r   r)  r   r   r   r  r    s    (31r   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	AdapterRegistryTestsc                     ddl m} |S )Nr   )AdapterRegistry)ra   r-  )r3   r-  s     r   r}   z$AdapterRegistryTests._getTargetClass  s    :r   c                 n    | j                         }| j                  t        |j                        d       y r6  )r   r   r<   _v_subregistries)r3   ars     r   test_ctor_no_basesz'AdapterRegistryTests.test_ctor_no_bases  s(    ]]_R00115r   c                    | j                         }| j                  |g      }| j                  t        |j                        d       | j                  t        |j                        d       | j	                  ||j                         y r   )r   r   r<   r/  r   )r3   basesubs      r   test_ctor_w_basesz&AdapterRegistryTests.test_ctor_w_bases  sg    }}mmTF#S112A6T223Q7c4001r   c                 D   | j                         }| j                         }| j                  |g      }|g|_        | j                  t        |j                        d       | j                  t        |j                        d       | j                  ||j                         y r   r   r   r   r<   r/  r   r3   beforeafterr4  s       r   ,test__setBases_removing_existing_subregistryzAAdapterRegistryTests.test__setBases_removing_existing_subregistry  s{    mmVH%V445q9U334a8c5112r   c                    | j                         }| j                         }| j                         }| j                  |g      }|j                  d   j                  |       |g|_        | j	                  t        |j                        d       | j	                  t        |j                        d       | j                  ||j                         y )Nr   r   r   )r   __dict__rU   r   r   r<   r/  r   )r3   r9  strayr:  r4  s        r   test__setBases_wo_stray_entryz2AdapterRegistryTests.test__setBases_wo_stray_entry  s    mmVH%[!((/V445q9U334a8c5112r   c                 ~   | j                         }| j                         }| j                  |g      }||g|_        | j                  t        |j                        d       | j                  t        |j                        d       | j                  ||j                         | j                  ||j                         y r   r7  r8  s       r   *test__setBases_w_existing_entry_continuingz?AdapterRegistryTests.test__setBases_w_existing_entry_continuing  s    mmVH%V445q9U334a8c6223c5112r   c                 >   | j                         } G d d      } |        |       }}|j                  |       |j                  |       t               }|j                  |       | j	                  |j
                  |       | j	                  |j
                  |       y )Nc                       e Zd ZdZd Zy)BAdapterRegistryTests.test_changed_w_subregistries.<locals>.DerivedNc                     || _         y r/   rk   )r3   originally_changeds     r   rn   zJAdapterRegistryTests.test_changed_w_subregistries.<locals>.Derived.changed  s	     2r   )r
   r   r   rl   rn   r   r   r   rp  rD    s    H3r   rp  )r   _addSubregistryr|   rn   r   rl   )r3   r3  rp  derived1derived2rm   s         r   test_changed_w_subregistriesz1AdapterRegistryTests.test_changed_w_subregistries  s}    }}	3 	3 %Y	(X&X&xTh''.h''.r   N)
r
   r   r   r}   r1  r5  r;  r?  rA  rJ  r   r   r   r+  r+    s%    623	33/r   r+  c                   *    e Zd Zd Zd Zd Zd Zd Zy)
Test_utilsc                 L    ddl m} ddlm} | j	                   |d       |       y )Nr   _convert_None_to_Interfacer   )ra   rO  ro  r   r   )r3   rO  r   s      r   &test__convert_None_to_Interface_w_Nonez1Test_utils.test__convert_None_to_Interface_w_None  s    E606	Br   c                 T    ddl m} t               }| j                   ||      |       y )Nr   rN  )ra   rO  r|   r   )r3   rO  rD   s      r   'test__convert_None_to_Interface_w_otherz2Test_utils.test__convert_None_to_Interface_w_other  s     E07?r   c                     ddl m} d}d} ||      }| j                  ||       | j                  |t	        |             y )Nr   _normalize_names   strstr)ra   rU  r   r   rB   )r3   rU  STRUNICODEnorms        r   test__normalize_name_strz#Test_utils.test__normalize_name_str  s=    :s#w'dDM2r   c                 D    ddl m} d}| j                   ||      |       y )Nr   rT  ustr)ra   rU  r   )r3   rU  USTRs      r   test__normalize_name_unicodez'Test_utils.test__normalize_name_unicode  s    :.5r   c                 h    ddl m} dddg i t               fD ]  }| j                  t        ||        y )Nr   rT  r   g      ?r   )ra   rU  r|   r   	TypeError)r3   rU  rD   s      r   test__normalize_name_otherz%Test_utils.test__normalize_name_other	  s7    :RR1 	AEi%@	Ar   N)r
   r   r   rP  rR  rZ  r^  ra  r   r   r   rL  rL    s    C
@
36Ar   rL  )rW  unittestr  r   r+   r-   rJ   rR   rW   rZ   TestCaser\   rE  rY  r	  r  rT  rX  r  r+  rL  r   r   r   <module>rd     s
    67H   <&& &(' (	 		] 	Mx00 M`0$*B 0$fy8h// y8x-+z3!2!2 z3z3.Q

X.. Q

h1H$5$5 1*@/8 @/FA"" Ar   