
    (ph|:                       S r SSKrSSKJr  S r " S S5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r	 " S S\R                  5      r " S S\5      r " S S\R                  5      r " S S\\5      r " S S\R                  5      r " S S\\5      r " S S\R                  5      r " S S\R                  5      r " S S \5      r " S! S"\R                  5      rg)#zAdapter registry tests
    N)OptimizationTestMixinc            	          SSK Jn    " S SU 5      n " S SU5      n " S SU5      n " S	 S
X25      n " S SX#5      n " S SU 5      n " S SU5      n " S SU 5      n " S SU5      n	XX4XVXxU	4	$ )Nr   	Interfacec                       \ rS rSrSrg)_makeInterfaces.<locals>.IB0    N__name__
__module____qualname____firstlineno____static_attributes__r
       T/var/www/html/venv/lib/python3.13/site-packages/zope/interface/tests/test_adapter.pyIB0r          r   r   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IB1   r
   Nr   r
   r   r   IB1r      r   r   r   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IB2!   r
   Nr   r
   r   r   IB2r   !   r   r   r   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IB3$   r
   Nr   r
   r   r   IB3r   $   r   r   r    c                       \ rS rSrSrg)_makeInterfaces.<locals>.IB4'   r
   Nr   r
   r   r   IB4r"   '   r   r   r$   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IF0*   r
   Nr   r
   r   r   IF0r&   *   r   r   r(   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IF1-   r
   Nr   r
   r   r   IF1r*   -   r   r   r,   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IR00   r
   Nr   r
   r   r   IR0r.   0   r   r   r0   c                       \ rS rSrSrg)_makeInterfaces.<locals>.IR13   r
   Nr   r
   r   r   IR1r2   3   r   r   r4   )zope.interfacer   )
r   r   r   r   r    r$   r(   r,   r0   r4   s
             r   _makeInterfacesr6      s    (i c c c c i c i c  Ss366r   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)CustomDataTypeBase<   Nc                      U R                   U   $ N_dataselfnames     r   __getitem__CustomDataTypeBase.__getitem__?   s    zz$r   c                      X R                   U'   g r;   r<   )r?   r@   values      r   __setitem__CustomDataTypeBase.__setitem__B   s     

4r   c                     U R                   U	 g r;   r<   r>   s     r   __delitem__CustomDataTypeBase.__delitem__E   s    JJtr   c                 ,    [        U R                  5      $ r;   )lenr=   r?   s    r   __len__CustomDataTypeBase.__len__H   s    4::r   c                     XR                   ;   $ r;   r<   r>   s     r   __contains__CustomDataTypeBase.__contains__K   s    zz!!r   c                 n    XL a  g[        U5      [        U 5      La  gUR                  U R                  :H  $ )NTF)typer=   r?   others     r   __eq__CustomDataTypeBase.__eq__N   s0    =;d4j({{djj((r   c                 ,    [        U R                  5      $ r;   )reprr=   rL   s    r   __repr__CustomDataTypeBase.__repr__V   s    DJJr   r
   )r   r   r   r   r=   rA   rE   rH   rM   rP   rV   rZ   r   r
   r   r   r8   r8   <   s*    E !") r   r8   c                       \ rS rSrSS jrSrg)CustomMappingZ   Nc                     0 U l         U(       a  U R                   R                  U5        U R                   R                  U l        U R                   R                  U l        g r;   )r=   updategetitemsrT   s     r   __init__CustomMapping.__init__[   s>    
JJe$::>>ZZ%%
r   )r=   ra   rb   r;   r   r   r   r   rc   r   r
   r   r   r]   r]   Z   s    &r   r]   c                       \ rS rSrSS jrSrg)CustomSequencec   Nc                     / U l         U(       a  U R                   R                  U5        U R                   R                  U l        g r;   )r=   extendappendrT   s     r   rc   CustomSequence.__init__d   s/    
JJe$jj''r   )r=   rk   r;   re   r
   r   r   rg   rg   c   s    (r   rg   c                       \ rS rSrSrg)CustomLeafSequencek   r
   Nr   r
   r   r   rn   rn   k       r   rn   c                       \ rS rSrSrg)CustomProvidedo   r
   Nr   r
   r   r   rr   rr   o   rp   r   rr   c                      \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS.S jrS.S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S-r/g)/BaseAdapterRegistryTestss   Nc                     SSK Jn  U$ )Nr   BaseAdapterRegistryzope.interface.adapterry   )r?   ry   s     r   _getBaseAdapterRegistry0BaseAdapterRegistryTests._getBaseAdapterRegistryw   s    >""r   c                     U R                  5       n " S SU5      nUR                   H"  n[        UR                  U[	        5       5        M$     U$ )Nc                   (    \ rS rSr " S S5      rSrg)6BaseAdapterRegistryTests._getTargetClass.<locals>._CUT~   c                   4    \ rS rSrS=rrS rS rS rS r	Sr
g)	BBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass   r
   c                     g r;   r
   )r?   regs     r   rc   KBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.__init__   s    r   c                 0    U =R                   U4-  sl         g r;   _changed)r?   origs     r   changedJBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.changed   s    MMdW,Mr   c                 0    U =R                   U4-  sl         g r;   
_extendorsr?   provideds     r   add_extendorOBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.add_extendor   s    OO{2Or   c                 r    [        U R                   Vs/ s H  nX!:w  d  M
  UPM     sn5      U l        g s  snf r;   )tupler   )r?   r   xs      r   remove_extendorRBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.remove_extendor   s5    &+ -?101 ./ -? '@DO -?s   	44r   N)r   r   r   r   r   r   rc   r   r   r   r   r
   r   r   LookupClassr      s!    (**:-3@r   r   r
   N)r   r   r   r   r   r   r
   r   r   _CUTr   ~   s    @ @r   r   )r|   
_delegatedsetattrr   object)r?   ry   r   r@   s       r   _getTargetClass(BaseAdapterRegistryTests._getTargetClass{   sK    "::<	@& 	@$ (22DD$$dFH5 3r   c                 ,    U R                  5       " 5       $ r;   r   rL   s    r   _makeOne!BaseAdapterRegistryTests._makeOne   s    ##%''r   c                     [         $ r;   dictrL   s    r   _getMappingType(BaseAdapterRegistryTests._getMappingType       r   c                     [         $ r;   r   rL   s    r   _getProvidedType)BaseAdapterRegistryTests._getProvidedType   r   r   c                     [         $ r;   )listrL   s    r   _getMutableListType,BaseAdapterRegistryTests._getMutableListType   r   r   c                     [         $ r;   )r   rL   s    r   _getLeafSequenceType-BaseAdapterRegistryTests._getLeafSequenceType   s    r   c                     U R                  5       nU" 5       nUR                   H2  nU R                  [        X#5      [        UR                  U5      5        M4     g r;   )r   r   assertIsgetattr	_v_lookup)r?   CUTregistryr@   s       r   test_lookup_delegation/BaseAdapterRegistryTests.test_lookup_delegation   sH    ""$5NNDMM'1C1CT)J #r   c                 \    U R                  5       nU R                  UR                  S5        g N   )r   assertEqual_generationr?   r   s     r   "test__generation_on_first_creation;BaseAdapterRegistryTests.test__generation_on_first_creation   s#    ==?--q1r   c                     U R                  5       n[        5       nUR                  U5        U R                  UR                  S5        U R                  UR
                  R                  X45        g N   )r   r   r   r   r   r   r   )r?   r   r   s      r   &test__generation_after_calling_changed?BaseAdapterRegistryTests.test__generation_after_calling_changed   sW    ==?x--q1++44x6GHr   c                      " S S5      nU R                  5       nU4Ul        U R                  UR                  S5        g )Nc                       \ rS rSrSrg)QBaseAdapterRegistryTests.test__generation_after_changing___bases__.<locals>._Base   r
   Nr   r
   r   r   _Baser          r   r   r   )r   	__bases__r   r   )r?   r   r   s      r   )test__generation_after_changing___bases__BBaseAdapterRegistryTests.test__generation_after_changing___bases__   s7    	 	==?#X--q1r   c                    U R                  [        UR                  5      U5        U R                  UR                  U R	                  5       5        U R                  5       nUR                   H  nU R                  XC5        M     U R                  UR                  S   U" 5       5        U R                  UR                  S   U5        U R                  [        UR                  US-
     5      S5        g Nr   r   )r   rK   	_adaptersassertIsInstancer   r   r?   r   expected_orderMTmappings        r   _check_basic_types_of_adapters7BaseAdapterRegistryTests._check_basic_types_of_adapters   s    ""#^	
 	h00$2J2J2LM!!#))G!!'. *++A.5h003R8X//0BCDaHr   c                    U R                  [        UR                  5      U5        U R                  UR                  U R	                  5       5        U R                  5       nUR                   H  nU R                  XC5        M     U(       ao  U R                  UR                  S   U" 5       5        U R                  UR                  S   U5        U R                  [        UR                  US-
     5      S5        g g r   )r   rK   _subscribersr   r   r   r   s        r   !_check_basic_types_of_subscribers:BaseAdapterRegistryTests._check_basic_types_of_subscribers   s    %%&	
 	!!4#;#;#=	
 !!#,,G!!'. -X2215rt<!!("7"7":B?S!6!6~7I!JKQO r   c                 d   [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/USS5        U R                  U
R	                  U/US5      S5        U R                  U
R
                  S5        U R                  U
5        U R                  5       nU R                  U
R                  S   U" X" X" SS05      05      05      5        U R                  5       nU R                  U
R                  U" US05      5        [        U
R                  5       5      nU R                  UU4USS4/5        g )N A1r   r   )r6   r   registerr   
registeredr   r   r   r   r   	_providedr   allRegistrations)r?   r   r   r   r    r$   r(   r,   r0   r4   r   r   PTr   s                 r   test_register&BaseAdapterRegistryTests.test_register   sE    	
c#C==?3%b$/,,cUC<dC--q1++H5!!#++A.RT
^ 4
 1 	
 ""$++R1
 . 	 (3356
F	'
 & 	r   c                 $  ^
^^^^^ [        5       u	  m
mmmpnmmU R                  5       nUR                  / TSS5        UR                  / TSS5        UR                  T
/TSS5        UR                  T
/TSS5        UR                  T
/TSS5        UR                  T
/TSS5        UR                  T
T/TSS5        UR                  T
T/TSS5        UR                  T
T/TS	S5        UR                  T
T/TSS5        U
UUUUU4S
 jnU R                  UR                  U" U R                  5       U R                  5       S95        [        UR                  5       5      nU R                  USTSS4STSS4T
4TSS4T
4TSS4T
4TSS4T
4TSS4T
T4TSS4T
T4TSS4T
T4TS	S4T
T4TSS4/
5        U R                  5       nU H  nUR                  " U6   M     U R                  UR                  UR                  5        U R                  UR                  UR                  5        [        Ul        [        Ul        [        Ul        [         Ul        S n	Xl        UR'                  5         U R                  UR                  U" [        [        S95        g )Nr   r   name1A2name2A3name3A4name4c                    > U " U" TU" SSS.5      05      U" TU" TU" SSS.5      TU" SSS.5      05      05      U" TU" TU" TU" SS05      05      TU" TU" S	S05      TU" S
S05      05      TU" TU" SS05      05      05      05      /5      $ )Nr   r   )r   r   )r   r   r   r   )r   r   r   r   r   r
   )Lr   r   r   r   r    r0   r4   s     r   build_adaptersXBaseAdapterRegistryTests.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                 F    U b  U O	[        5       n U R                  U5        U $ r;   rn   rk   existingnews     r   addValueRBaseAdapterRegistryTests.test_register_multiple_allRegistrations.<locals>.addValueP  (    $06H6J  OOC Or   )r6   r   r   r   r   r   r   sortedr   r   r]   _mappingTypern   _leafSequenceTyperg   _sequenceTyperr   _providedType_addValueToLeafrebuild)r?   r$   r(   r,   r   r   r   	registry2argsr   r   r   r   r    r0   r4   s             @@@@@@r   'test_register_multiple_allRegistrations@BaseAdapterRegistryTests.test_register_multiple_allRegistrations   s    	
c3#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%  	,,h.@.@A,,h.@.@A !.%7"!/!/	 $, ++'- -	r   c           	          [        5       u	  pp4pVpxn	U R                  5       n
U R                  [        5         U
R	                  U/U[        5       S5        S S S 5        g ! , (       d  f       g = fNr   )r6   r   assertRaises
ValueErrorr   r   r?   r   r   r   r    r$   r(   r,   r0   r4   r   s              r   test_register_with_invalid_name8BaseAdapterRegistryTests.test_register_with_invalid_namea  sW     	
c#C==?z*seS&(D9 +**s   A
A+c           	         [        5       u	  pp4pVpxn	U R                  5       n
U
R                  S /USS5        U
R                  S /USS 5        U R                  [	        U
R
                  5      S5        U R                  U
R
                  U R                  5       5        [        U
R                  5       5      nU R                  U/ 5        g )Nr   r   r   )
r6   r   r   r   rK   r   r   r   r   r   )r?   r   r   r   r    r$   r(   r,   r0   r4   r   r   s               r   )test_register_with_value_None_unregistersBBaseAdapterRegistryTests.test_register_with_value_None_unregistersi  s     	
c#C==?4&#r404&#r40X//0!4h00$2J2J2LM(3356
R(r   c                    SSK Jn  [        5       u	  p#pEpgpn
U R                  5       n[	        5       nUR                  S /U	SU5        UR                  nUR                  S /U	SU5        U R                  UR                  U5        U R                  U5        U R                  5       nU R                  UR                  S   U" X" X" SU05      05      05      5        [        UR                  5       5      nU R                  UU4U	SU4/5        g )Nr   r   r   r   )r5   r   r6   r   r   r   r   r   r   r   r   r   r   )r?   r   r   r   r   r    r$   r(   r,   r0   r4   r   _value_beforer   r   s                   r   test_register_with_same_value6BaseAdapterRegistryTests.test_register_with_same_valueu  s   , 	
c#C==?4&#r62&&4&#r62--w7++H5!!#++A.2RV-1
 	 (3356
L	'
 & 	r   c                     U R                  5       nU R                  UR                  S /S S5      S 5        [        UR	                  5       5      nU R                  U/ 5        g Nr   )r   r   r   r   r   )r?   r   r   s      r   test_registered_empty.BaseAdapterRegistryTests.test_registered_empty  sQ    ==?,,dVT2>E(3356
R(r   c           	          [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/S SS5        U R                  U
R	                  U/S S5      S 5        g Nr   r   )r6   r   r   r   r   r  s              r   test_registered_non_empty_miss7BaseAdapterRegistryTests.test_registered_non_empty_miss  s\     	
c#C==?3%r40,,cUD"=tDr   c                     U R                  5       nUR                  S /S SS5        U R                  UR                  S /S S5      S5        g r  )r   r   r   r   r   s     r   test_registered_non_empty_hit6BaseAdapterRegistryTests.test_registered_non_empty_hit  sD    ==?4&$D1,,dVT2>Er   c                     U R                  5       nUR                  S /S S5        U R                  UR                  S /S S5      S 5        U R                  [	        UR
                  5      S5        g )Nr   r   )r   
unregisterr   r   rK   r   r   s     r   test_unregister_empty.BaseAdapterRegistryTests.test_unregister_empty  s]    ==?TFD"-,,dVT2>EX//0!4r   c                    [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/S SS5        U
R                  U/S S5        U R	                  U
R                  U/S S5      S5        U R                  U
5        U R                  5       nU R	                  U
R                  S   U" X+" S U" SS05      05      05      5        U R                  5       nU R	                  U
R                  U" S S05      5        g )Nr   r   r   r6   r   r   r%  r   r   r   r   r   r   r   r?   r   r   r   r    r$   r(   r,   r0   r4   r   r   r   s                r   *test_unregister_non_empty_miss_on_requiredCBaseAdapterRegistryTests.test_unregister_non_empty_miss_on_required  s    	
c#C==?3%r40SE4,,,cUD"=tD++H5!!#++A.Rb"dn1
 	 ""$++R!1
 . 	r   c                    [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/S SS5        U
R                  U/S S5        U R	                  U
R                  U/S S5      S5        U R                  U
5        U R                  5       nU R	                  U
R                  S   U" X+" S U" SS05      05      05      5        U R                  5       nU R	                  U
R                  U" S S05      5        g )Nr   r   nonesuchr   r)  r*  s                r   &test_unregister_non_empty_miss_on_name?BaseAdapterRegistryTests.test_unregister_non_empty_miss_on_name  s    	
c#C==?3%r40SE44,,cUD"=tD++H5!!#++A.Rb"dn1
 	 ""$++R!1
 . 	r   c           	         [        5       u	  pp4pVpxn	U R                  5       n
[        5       n[        5       nU
R                  U/S SU5        U
R	                  U/S SU5        U R                  U
R                  U/S S5      U5        g r  )r6   r   r   r   r%  r   r   r?   r   r   r   r    r$   r(   r,   r0   r4   r   r   nomatchs                r   (test_unregister_with_value_not_None_missABaseAdapterRegistryTests.test_unregister_with_value_not_None_miss  s~     	
c#C==?x(3%r40SE4W5h))3%r:DAr   c                    [        5       u	  pp4pVpxn	U R                  5       n
[        5       n[        5       nU
R                  X#/S SU5        U
R                  X$/S SU5        U R	                  U
SS9  U R                  X:R                  S   U   5        U R                  XJR                  S   U   5        U R                  5       nU R                  U
R                  S   U" X-" X=" S U" SU05      05      XM" S U" SU05      05      05      05      5        U R                  5       nU R                  U
R                  U" S S05      5        U
R                  X$/S SU5        U R                  X:R                  S   U   5        U R                  XJR                  S   U   5        U R                  U
R                  S   U" X-" X=" S U" SU05      05      05      05      5        U R                  U
R                  U" S S05      5        g )Nr      r   r   r   )r6   r   r   r   r   assertInr   r   r   r   r   r%  assertNotIn)r?   r   r   r   r    r$   r(   r,   r0   r4   r   oneanotherr   r   s                  r   .test_unregister_hit_clears_empty_subcomponentsGBaseAdapterRegistryTests.test_unregister_hit_clears_empty_subcomponents  s    	
c#C==?h(3*dB43*dB8++HQ+Gc--a056c--a056!!#++A.RRr2s)} 56Rr2w-'8 9:	1
 		 ""$++R!1
 . 	 	SJb':c--a056003C89++A.RRr2s)} 561
 	 	++R!1
 . 	r   c                     U R                  5       nUR                  S /S S5        U R                  UR                  S /S S5      S 5        U R	                  USS9  g )Nr   r   r8  )r   unsubscriber   r   r   r   s     r   test_unsubscribe_empty/BaseAdapterRegistryTests.test_unsubscribe_empty  sU    ==?dVT2.,,dVT2>E..x.Jr   c                 v   [        5       u	  pp4pVpxn	U R                  5       n
[        5       nU
R                  U/S U5        U R	                  5       nU R                  5       nU R                  5       nU R                  U
5        U R                  U
R                  S   U" X," S U" SU" U45      05      05      05      5        U R                  U
R                  U" 0 5      5        U
R                  U/S U5        U R                  [        U
R                  5      S5        U R                  U
R                  U" 0 5      5        g )Nr   r   r   )r6   r   r   	subscriber   r   r   r   r   r   r   r@  rK   )r?   r   r   r   r    r$   r(   r,   r0   r4   r   r   r   r   r   s                  r   test_unsubscribe_hit-BaseAdapterRegistryTests.test_unsubscribe_hit  s-    	
c#C==?xC5$-!!#%%'""$..x8..q12b4'
  7
 4 	 	++RV4cUD$/X223Q7++RV4r   c                 &    U R                  X5        g)an  
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r?   leaf1leaf2s      r   assertLeafIdentity+BaseAdapterRegistryTests.assertLeafIdentity0  s     	&r   c                    [        5       u	  pp4pVpxn	U R                  5       n
[        5       n[        5       n[        5       n[        5       nU
R                  U/S U5        U
R                  U/S U5        U
R                  U/X5        U
R                  U/X5        U R	                  U
SS9  U R                  5       nU R                  5       nU R                  5       nU R                  U
R                  S   U" X/" S U" SU" X45      05      X" SU" X45      05      05      05      5        U R                  U
R                  U" US05      5        U
R                  S   U   U   S   nU
R                  S   U   S    S   nU
R                  U/S U5        U
R                  U/X5        U R                  U
R                  S   U" X/" S U" SU" U45      05      X" SU" U45      05      05      05      5        U R                  U
R                  U" US05      5        U
R                  S   U   U   S   nU
R                  S   U   S    S   nU R                  UU5        U R                  UU5        U
R                  U/S U5        U
R                  U/X5        U R                  [        U
R                  5      S5        U R                  [        U
R                  5      S5        g )Nr   r8  r   r   r   )r6   r   r   rD  r   r   r   r   r   r   r   r@  rL  rK   )r?   r   r   r   r    r$   r(   r,   r0   r4   r   firstsecondthirdfourthr   r   r   IR0_leaf_origNon_leaf_origIR0_leaf_newNon_leaf_news                         r   test_unsubscribe_after_multiple8BaseAdapterRegistryTests.test_unsubscribe_after_multiple<  s     	
c#C==?C5$.C5$/C5#-C5#...x.J!!#%%'""$..q12b"a012RQ/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                    [        5       u	  pp4pVpxn	U R                  5       n
[        5       nU
R                  U/X5        U
R                  U/X5        U R	                  5       nU R                  5       nU R                  5       nU R                  U
R                  S   U" X," X" SU" X45      05      05      05      5        U R                  U
R                  U" US05      5        U
R                  U/X5        U
R                  U/X5        U R                  [        U
R                  5      S5        U R                  U
R                  U" 5       5        g Nr   r   r   r   r6   r   r   rD  r   r   r   r   r   r   r@  rK   )r?   r   r   r   r    r$   r(   r,   r0   r4   r   rO  r   r   r   s                  r   5test_subscribe_unsubscribe_identical_objects_providedNBaseAdapterRegistryTests.test_subscribe_unsubscribe_identical_objects_providedr  sH    	
c#C==?C5#-C5#-!!#%%'""$..q12RQ~./0 7
 4 	
 	++R1
 . 	 	cUC/cUC/X223Q7++RT2r   c                    [        5       u	  pp4pVpxn	U R                  5       n
[        5       n[        5       nU
R                  U/X5        U
R                  U/X5        U R	                  5       nU R                  5       nU R                  5       nU R                  U
R                  S   U" X-" X" SU" X45      05      05      05      5        U R                  U
R                  U" US05      5        U
R                  U/X5        U
R                  U/X5        U R                  [        U
R                  5      S5        U R                  U
R                  U" 5       5        g rZ  r[  )r?   r   r   r   r    r$   r(   r,   r0   r4   r   rO  rP  r   r   r   s                   r   4test_subscribe_unsubscribe_nonequal_objects_providedMBaseAdapterRegistryTests.test_subscribe_unsubscribe_nonequal_objects_provided  sO    	
c#C==?C5#-C5#.!!#%%'""$..q12RQ/01 7
 4 	
 	++R1
 . 	 	cUC/cUC0X223Q7++RT2r   c                     U R                  5       nU R                  UR                  S /S S5      5        [        UR	                  5       5      nU R                  U/ 5        g r  )r   assertIsNone
subscribedr   allSubscriptionsr   )r?   r   rc  s      r   test_subscribed_empty.BaseAdapterRegistryTests.test_subscribed_empty  sO    ==?(--tfdB?@(3356
R(r   c           	      >   [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/US5        U R                  U
R	                  U/US5      5        U R                  U
R	                  U/US5      5        U R                  U
R	                  U/US5      5        g )Nr   r   )r6   r   rD  rb  rc  r  s              r   test_subscribed_non_empty_miss7BaseAdapterRegistryTests.test_subscribed_non_empty_miss  s     	
c#C==?C5#t,(--seS"=>(--seS"=>(--seS"=>r   c           	          [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/US5        U R                  U
R	                  U/US5      S5        g r  )r6   r   rD  r   rc  r  s              r   test_subscribed_non_empty_hit6BaseAdapterRegistryTests.test_subscribed_non_empty_hit  sZ     	
c#C==?C5#t,,,cUC>Er   c           	      L   [        5       u	  pp4pVpxn	U R                  5       n
[        5       n[        5       nU
R                  U/S U5        U
R                  U/S U5        U R	                  U
SS9  U
R                  U/S 5        U R                  [        U
R                  5      S5        g )Nr   r8  r   )	r6   r   r   rD  r   r@  r   rK   r   )r?   r   r   r   r    r$   r(   r,   r0   r4   r   rO  rP  s                r   &test_unsubscribe_w_None_after_multiple?BaseAdapterRegistryTests.test_unsubscribe_w_None_after_multiple  s     	
c#C==?C5$.C5$/..x.JcUD)X223Q7r   c                    [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/S S5        U R                  U
SS9  U
R	                  U/S S5        U R                  [        U
R                  5      S5        U R                  5       nU R                  5       nU R                  U
R                  S   U" X+" S U" SU" S5      05      05      05      5        g )Nr   r   r8  r   r   r   
r6   r   rD  r   r@  r   rK   r   r   r   r?   r   r   r   r    r$   r(   r,   r0   r4   r   r   r   s                r   +test_unsubscribe_non_empty_miss_on_requiredDBaseAdapterRegistryTests.test_unsubscribe_non_empty_miss_on_required  s     	
c#C==?C5$-..x.JcUD"-X223Q7!!#%%'..q12b"aj)* 7
 4 	r   c                    [        5       u	  pp4pVpxn	U R                  5       n
U
R                  U/S S5        U R                  U
SS9  U
R	                  U/S S5        U R                  [        U
R                  5      S5        U R                  5       nU R                  5       nU R                  U
R                  S   U" X+" S U" SU" S5      05      05      05      5        g )Nr   r   r8  r   r   r   rq  rr  rs  s                r   (test_unsubscribe_non_empty_miss_on_valueABaseAdapterRegistryTests.test_unsubscribe_non_empty_miss_on_value  s     	
c#C==?C5$-..x.JcUD$/X223Q7!!#%%'..q12b"aj)* 7
 4 	r   c           	         [        5       u	  pp4pVpxn	U R                  5       n
[        5       n[        5       nU
R                  U/S U5        U
R	                  U/S U5        U R                  [        U
R                  5      S5        g r   )r6   r   r   rD  r@  r   rK   r   r2  s                r   )test_unsubscribe_with_value_not_None_missBBaseAdapterRegistryTests.test_unsubscribe_with_value_not_None_miss  sv     	
c#C==?x(C5$-cUD'2X223Q7r   c                 &    U R                  S5        g )Nz*Example method, not intended to be called.failrL   s    r   _instance_method_notify_target7BaseAdapterRegistryTests._instance_method_notify_target  s    		>?r   c           	      P   [        5       u	  pp4pVpxn	U R                  5       n
U R                  [        U
R                  5      S5        U
R                  U/S U R                  5        U
R                  U/S U R                  5        U R                  [        U
R                  5      S5        g Nr   )r6   r   r   rK   r   rD  r  r@  r  s              r    test_unsubscribe_instance_method9BaseAdapterRegistryTests.test_unsubscribe_instance_method  s     	
c#C==?X223Q7C5$(K(KLcUD$*M*MNX223Q7r   c                   ^^^^^^ [        5       u	  mmmmpnmmU R                  5       nUR                  / TS5        UR                  / TS5        UR                  T/TS5        UR                  T/TS5        UR                  T/TS5        UR                  T/TS5        UR                  TT/TS5        UR                  TT/TS5        UR                  TT/TS5        UR                  TT/TS5        UUUUUU4S jnU R                  UR                  U" U R                  5       U R                  5       U R                  5       S95        UU4S jnU R                  UR                  U" U R                  5       S95        [        UR                  5       5      nU R                  US	TS4S	TS4T4TS4T4TS4T4TS4T4TS4TT4TS4TT4TS4TT4TS4TT4TS4/
5        U R                  5       nU H  n	UR                  " U	6   M     U R                  UR                  UR                  5        U R                  UR                  UR                  5        [        Ul        [        Ul        [         Ul        [$        Ul        S
 n
Xl        UR+                  5         U R                  UR                  U" [         [        [        S95        g )Nr   r   r   r   c                   > U " U" TU" SU" SS/5      05      05      U" TU" TU" SU" SS/5      05      TU" SU" SS/5      05      05      05      U" TU" TU" TU" SU" S/5      05      05      TU" TU" SU" S/5      05      TU" SU" S/5      05      05      TU" TU" SU" S/5      05      05      05      05      /5      $ )Nr   r   r   r   r   r
   )	r   Fr   r   r   r   r    r0   r4   s	      r   build_subscribers\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                    > U " TSTS05      $ )N      r
   )Pr0   r4   s    r   build_providedYBaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.build_providedK  s    QQ  r   )r  r
   c                 F    U b  U O	[        5       n U R                  U5        U $ r;   r   r   s     r   r   SBaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.addValuep  r   r   )r6   r   rD  r   r   r   r   r   r   r   r   rd  r]   r   rn   r  rg   r  rr   r  r  r  )r?   r$   r(   r,   r   r  r  r   r  r  r   r   r   r   r    r0   r4   s              @@@@@@r   (test_subscribe_multiple_allRegistrationsABaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations  s    	
c3#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&  	//1F1FG,,h.@.@A !.%7"!/!/	 $, ..*-1 -	r   r
   )r   )0r   r   r   r   maxDiffr|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r"  r&  r+  r/  r4  r=  rA  rE  rL  rW  r\  r_  re  rh  rk  rn  rt  rw  rz  r  r  r  r   r
   r   r   ru   ru   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   ru   c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)#CustomTypesBaseAdapterRegistryTestsi  z
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                     [         $ r;   )r]   rL   s    r   r   3CustomTypesBaseAdapterRegistryTests._getMappingType  s    r   c                     [         $ r;   )rr   rL   s    r   r   4CustomTypesBaseAdapterRegistryTests._getProvidedType      r   c                     [         $ r;   )rg   rL   s    r   r   7CustomTypesBaseAdapterRegistryTests._getMutableListType  r  r   c                     [         $ r;   )rn   rL   s    r   r   8CustomTypesBaseAdapterRegistryTests._getLeafSequenceType  s    !!r   c                 4   ^ ^ SSK Jm   " UU 4S jST5      nU$ )Nr   rx   c                      > \ rS rSr YR	                  5       r YR                  5       r YR                  5       r	 YR                  5       rS rU 4S jrSrg)ZCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistryi  c                 V    U(       d  U R                  5       nUR                  U5        U$ r;   )r  rk   )r?   existing_leaf_sequencenew_items      r   r  jCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistry._addValueToLeaf  s(    --1-C-C-E*&--h7--r   c                 D   > TR                  U UU5      nX1S S & X!;  d   eU$ r;   )_removeValueFromLeaf)r?   r  	to_removewithout_removedry   s       r   r  oCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistry._removeValueFromLeaf  s8    "5"J"J*# -<q) >>>--r   r
   N)r   r   r   r   r   r   r   r  r   r  r   r  r  r  r   )ry   r?   s   r   CustomAdapterRegistryr    sK    //1L 446M $ 9 9 ; 113M.. .r   r  rz   )r?   r  ry   s   ` @r   r|   ;CustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry  s     >	. 	.$7 	.* %$r   c                 &    U R                  X5        g r;   )r   rI  s      r   rL  6CustomTypesBaseAdapterRegistryTests.assertLeafIdentity  s    e#r   r
   N)r   r   r   r   __doc__r   r   r   r   r|   rL  r   r
   r   r   r  r    s%    "%4$r   r  c                      ^  \ rS rSrS r\r SS jrS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rU 4S jrS rS rS rS rS r Sr!U =r"$ ) LookupBaseFallbackTestsi  c                     SSK Jn  U$ )Nr   )LookupBaseFallback)r{   r  )r?   r  s     r   _getFallbackClass)LookupBaseFallbackTests._getFallbackClass  s    =!!r   c                 v   ^^^ Tc  S mTc  S mTc  S m " UUU4S jSU R                  5       5      nU" 5       $ )Nc                     g r;   r
   r?   requiredr   r@   s       r   	uc_lookup3LookupBaseFallbackTests._makeOne.<locals>.uc_lookup      r   c                     [        5       er;   NotImplementedErrorr?   r  r   s      r   uc_lookupAll6LookupBaseFallbackTests._makeOne.<locals>.uc_lookupAll      )++r   c                     [        5       er;   r  r  s      r   uc_subscriptions:LookupBaseFallbackTests._makeOne.<locals>.uc_subscriptions  r  r   c                   (   > \ rS rSr Y r Yr YrSrg)1LookupBaseFallbackTests._makeOne.<locals>.Derivedi  r
   N)r   r   r   r   _uncached_lookup_uncached_lookupAll_uncached_subscriptionsr   )r  r  r  s   r   Derivedr    s    (".&6#r   r  r   )r?   r  r  r  r  s    ``` r   r    LookupBaseFallbackTests._makeOne  sN      , #,	7 	7d**, 	7
 yr   c                     S nU R                  US9nU R                  [        5         UR                  SS[	        5       5        S S S 5        g ! , (       d  f       g = f)Nc                 &    U R                  S5        g NzThis should never be calledr}  r  s       r   _lookupCLookupBaseFallbackTests.test_lookup_w_invalid_name.<locals>._lookup      II34r   r  AB)r   r  r  lookupr   r?   r  lbs      r   test_lookup_w_invalid_name2LookupBaseFallbackTests.test_lookup_w_invalid_name  sE    	5 ]]W]-z*IIfc68, +**   A
Ac                    ^ / mU4S jnU R                  US9nUR                  SSS5      nU R                  U5        U R                  TS/5        g )Nc                 ,   > TR                  XU45        g r;   rk   r?   r  r   r@   _called_withs       r   r  DLookupBaseFallbackTests.test_lookup_miss_no_default.<locals>._lookup      T :;r   r  r  r  Cr  r  r  )r   r  rb  r   r?   r  r  foundr  s       @r   test_lookup_miss_no_default3LookupBaseFallbackTests.test_lookup_miss_no_default  sS    	< ]]W]-		&#s+% (:';<r   c                    ^ / m[        5       nU4S jnU R                  US9nUR                  SSSU5      nU R                  XA5        U R	                  TS/5        g )Nc                 ,   > TR                  XU45        g r;   r  r  s       r   r  CLookupBaseFallbackTests.test_lookup_miss_w_default.<locals>._lookup  r  r   r  r  r  r  r  r   r   r  r   r   r?   _defaultr  r  r  r  s        @r   test_lookup_miss_w_default2LookupBaseFallbackTests.test_lookup_miss_w_default  sZ    8	< ]]W]-		&#sH5e&(:';<r   c                   ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nU R                  Xa5        U R	                  TS/5        U R	                  TX#/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  rk   popr?   r  r   r@   r  _resultss       r   r  ?LookupBaseFallbackTests.test_lookup_not_cached.<locals>._lookup  $    T :;<<?"r   r  r  r  r  r  r  	r?   abcr  r  r  r  r  s	          @@r   test_lookup_not_cached.LookupBaseFallbackTests.test_lookup_not_cached  s}    (FHfha!9	# ]]W]-		&#s+e(:';<A6*r   c                 4  ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nUR                  SSS5      nU R                  Xa5        U R	                  TS/5        U R	                  TX#/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  ;LookupBaseFallbackTests.test_lookup_cached.<locals>._lookup  r  r   r  r  r  r  r  r  r  s	          @@r   test_lookup_cached*LookupBaseFallbackTests.test_lookup_cached  s    (FHfha!9	# ]]W]-		&#s+		&#s+e(:';<A6*r   c                   ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nU R                  Xa5        U R	                  TS/5        U R	                  TX#/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  NLookupBaseFallbackTests.test_lookup_not_cached_multi_required.<locals>._lookup  r  r   r  r  Dr  r  r
  r  r  r  r  s	          @@r   %test_lookup_not_cached_multi_required=LookupBaseFallbackTests.test_lookup_not_cached_multi_required  s}    (FHfha!9	# ]]W]-		*c3/e(>'?@A6*r   c                 4  ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nUR                  SSS5      nU R                  Xa5        U R	                  TS/5        U R	                  TX#/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  JLookupBaseFallbackTests.test_lookup_cached_multi_required.<locals>._lookup+  r  r   r  r
  r  r  r  r  r  s	          @@r   !test_lookup_cached_multi_required9LookupBaseFallbackTests.test_lookup_cached_multi_required&  s    (FHfha!9	# ]]W]-		*c3/		*c3/e(>'?@A6*r   c                 X  ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nUR                  U5        UR                  SSS5      nU R	                  Xb5        U R                  TSS/5        U R                  TU/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  MLookupBaseFallbackTests.test_lookup_not_cached_after_changed.<locals>._lookup;  r  r   r  r  r  r  r  )r   r   r  r   r   r   r  s	          @@r   $test_lookup_not_cached_after_changed<LookupBaseFallbackTests.test_lookup_not_cached_after_changed6  s    (FHfha!9	# ]]W]-		&#s+


2		&#s+e,.@A	CA3'r   c                     S nU R                  US9nU R                  [        5         UR                  SS[	        5       5        S S S 5        g ! , (       d  f       g = f)Nc                 &    U R                  S5        g r  r}  r  s       r   r  DLookupBaseFallbackTests.test_lookup1_w_invalid_name.<locals>._lookupJ  r  r   r  r  r  )r   r  r  lookup1r   r  s      r   test_lookup1_w_invalid_name3LookupBaseFallbackTests.test_lookup1_w_invalid_nameH  sE    	5 ]]W]-z*JJsC* +**r  c                    ^ / mU4S jnU R                  US9nUR                  SSS5      nU R                  U5        U R                  TS/5        g )Nc                 ,   > TR                  XU45        g r;   r  r  s       r   r  ELookupBaseFallbackTests.test_lookup1_miss_no_default.<locals>._lookupT  r  r   r  r  r  r  r  )r   r  rb  r   r  s       @r   test_lookup1_miss_no_default4LookupBaseFallbackTests.test_lookup1_miss_no_defaultQ  sS    	< ]]W]-

3S)% (:';<r   c                    ^ / m[        5       nU4S jnU R                  US9nUR                  SSSU5      nU R                  XA5        U R	                  TS/5        g )Nc                 ,   > TR                  XU45        g r;   r  r  s       r   r  DLookupBaseFallbackTests.test_lookup1_miss_w_default.<locals>._lookup`  r  r   r  r  r  r  r  r   r   r  r   r   r  s        @r   test_lookup1_miss_w_default3LookupBaseFallbackTests.test_lookup1_miss_w_default\  sZ    8	< ]]W]-

3S(3e&(:';<r   c                   ^ / m[        5       nU4S jnU R                  US9nUR                  SSSU5      nU R                  XA5        UR                  SSSU5      nU R                  XA5        U R	                  TS/5        g )Nc                 ,   > TR                  XU45        g r;   r  r  s       r   r  SLookupBaseFallbackTests.test_lookup1_miss_w_default_negative_cache.<locals>._lookupl  r  r   r  r  r  r  r  r'  r  s        @r   *test_lookup1_miss_w_default_negative_cacheBLookupBaseFallbackTests.test_lookup1_miss_w_default_negative_cacheh  sz    8	< ]]W]-

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

3S(3e&(:';<r   c                   ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nU R                  Xa5        U R	                  TS/5        U R	                  TX#/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  @LookupBaseFallbackTests.test_lookup1_not_cached.<locals>._lookup{  r  r   r  r  r  r  r  r'  r  s	          @@r   test_lookup1_not_cached/LookupBaseFallbackTests.test_lookup1_not_cachedv  s}    (FHfha!9	# ]]W]-

3S)e(:';<A6*r   c                 4  ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nUR                  SSS5      nU R                  Xa5        U R	                  TS/5        U R	                  TX#/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  <LookupBaseFallbackTests.test_lookup1_cached.<locals>._lookup  r  r   r  r  r  r  r  r'  r  s	          @@r   test_lookup1_cached+LookupBaseFallbackTests.test_lookup1_cached  s    (FHfha!9	# ]]W]-

3S)

3S)e(:';<A6*r   c                 X  ^^ / m[        5       [        5       [        5       p2nXU/mUU4S jnU R                  US9nUR                  SSS5      nUR                  U5        UR                  SSS5      nU R	                  Xb5        U R                  TSS/5        U R                  TU/5        g )Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  NLookupBaseFallbackTests.test_lookup1_not_cached_after_changed.<locals>._lookup  r  r   r  r  r  r  r  )r   r   r  r   r   r   r  s	          @@r   %test_lookup1_not_cached_after_changed=LookupBaseFallbackTests.test_lookup1_not_cached_after_changed  s    (FHfha!9	# ]]W]-

3S)


2

3S)e,.@A	CA3'r   c                     [        5       [        5       p!U R                  5       nU R                  [        5         UR	                  X![        5       5        S S S 5        g ! , (       d  f       g = fr;   )r   r   r  r  adapter_hook)r?   reqprvr  s       r    test_adapter_hook_w_invalid_name8LookupBaseFallbackTests.test_adapter_hook_w_invalid_name  sB    8VXS]]_z*OOCfh/ +**s   A
A+c                     [        5       [        5       p!U R                  5       nUR                  X!S5      nU R                  U5        g r  )r   r   r?  rb  )r?   r@  rA  r  r  s        r   !test_adapter_hook_miss_no_default9LookupBaseFallbackTests.test_adapter_hook_miss_no_default  s6    8VXS]]_"-% r   c                     [        5       [        5       [        5       p2nU R                  5       nUR                  X!SU5      nU R                  XS5        g r  )r   r   r?  r   )r?   r@  rA  r  r  r  s         r    test_adapter_hook_miss_w_default8LookupBaseFallbackTests.test_adapter_hook_miss_w_default  s<    #Xvx(]]_"h7e&r   c                    ^^ / mU4S jmU4S jn[        5       [        5       [        5       pCnU R                  US9nUR                  X2SU5      nU R                  Xd5        U R	                  TU/5        g )Nc                 (   > TR                  U 5        g r;   r  context_f_called_withs    r   _factoryTLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None.<locals>._factory  s    !!'*r   c                    > T$ r;   r
   r?   r  r   r@   rO  s       r   r  SLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None.<locals>._lookup      Or   r  r  r   r   r?  r   r   )	r?   r  r@  rA  r  r  adaptedrN  rO  s	          @@r   *test_adapter_hook_hit_factory_returns_NoneBLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None  se    	+	 $Xvx(]]W]-//#C:g(#/r   c                   ^^^	 / m[        5       mUU4S jm	U	4S jn[        5       [        5       [        5       pCnU R                  US9nUR                  X2SU5      nU R                  UT5        U R	                  TU/5        g )Nc                 *   > TR                  U 5        T$ r;   r  rM  _adapterrN  s    r   rO  WLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter.<locals>._factory      !!'*Or   c                    > T$ r;   r
   rR  s       r   r  VLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter.<locals>._lookup  rT  r   r  r  rU  
r?   r  r@  rA  r  r  rV  r\  rN  rO  s
          @@@r   -test_adapter_hook_hit_factory_returns_adapterELookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter  n    8		 $Xvx(]]W]-//#C:gx(#/r   c                    >^^ / mU4S jmSU4S jjn[        5       n[        5       nU R                  US9nUR                  X25      nU R	                  XP5        U R                  TU /5        g )Nc                 *   > TR                  U 5        U $ r;   r  rL  s    r   rO  ILookupBaseFallbackTests.test_adapter_hook_super_unwraps.<locals>._factory  s    !!'*Nr   c                    > T$ r;   r
   rR  s       r   r  HLookupBaseFallbackTests.test_adapter_hook_super_unwraps.<locals>._lookup  rT  r   r  )r   )superr   r   r?  r   r   )	r?   r  r  r   r  rV  rN  rO  	__class__s	         @@r   test_adapter_hook_super_unwraps7LookupBaseFallbackTests.test_adapter_hook_super_unwraps  s^    		 78]]W]-//(5g$$0r   c                   ^^^	 / m[        5       mUU4S jm	U	4S jn[        5       [        5       [        5       pCnU R                  US9nUR                  X#SU5      nU R                  UT5        U R	                  TU/5        g )Nc                 *   > TR                  U 5        T$ r;   r  r[  s    r   rO  ;LookupBaseFallbackTests.test_queryAdapter.<locals>._factory  r^  r   c                    > T$ r;   r
   rR  s       r   r  :LookupBaseFallbackTests.test_queryAdapter.<locals>._lookup  rT  r   r  r  )r   r   queryAdapterr   r   ra  s
          @@@r   test_queryAdapter)LookupBaseFallbackTests.test_queryAdapter  rd  r   c                    ^^ / m[        5       [        5       [        5       /mUU4S jnU R                  US9nUR                  SS5      nU R                  U[	        T5      5        U R                  TS/5        g )Nc                 >   > TR                  X45        [        T5      $ r;   rk   r   r?   r  r   r  r  s      r   
_lookupAllCLookupBaseFallbackTests.test_lookupAll_uncached.<locals>._lookupAll       45?"r   r  r  r  r  r  r   r   	lookupAllr   r   r?   rz  r  r  r  r  s       @@r   test_lookupAll_uncached/LookupBaseFallbackTests.test_lookupAll_uncached  sg    Hfh1	# ]]
]3S#&h07r   c                   ^^ / m[        5       [        5       [        5       /mUU4S jnU R                  US9nUR                  SS5      nUR                  SS5      nU R                  U[	        T5      5        U R                  TS/5        g )Nc                 >   > TR                  X45        [        T5      $ r;   rx  ry  s      r   rz  ALookupBaseFallbackTests.test_lookupAll_cached.<locals>._lookupAll  r|  r   r}  r  r  r~  r  r  s       @@r   test_lookupAll_cached-LookupBaseFallbackTests.test_lookupAll_cached  sw    Hfh1	# ]]
]3S#&S#&h07r   c                    ^^ / m[        5       [        5       [        5       /mUU4S jnU R                  US9nUR                  SS5      nU R                  U[	        T5      5        U R                  TS/5        g )Nc                 >   > TR                  X45        [        T5      $ r;   rx  ry  s      r   _subscriptionsKLookupBaseFallbackTests.test_subscriptions_uncached.<locals>._subscriptions  r|  r   r  r  r  r~  r   r   subscriptionsr   r   r?   r  r  r  r  r  s       @@r   test_subscriptions_uncached3LookupBaseFallbackTests.test_subscriptions_uncached  si    Hfh1	# ]]N];  c*h07r   c                   ^^ / m[        5       [        5       [        5       /mUU4S jnU R                  US9nUR                  SS5      nUR                  SS5      nU R                  U[	        T5      5        U R                  TS/5        g )Nc                 >   > TR                  X45        [        T5      $ r;   rx  ry  s      r   r  ILookupBaseFallbackTests.test_subscriptions_cached.<locals>._subscriptions'  r|  r   r  r  r  r~  r  r  s       @@r   test_subscriptions_cached1LookupBaseFallbackTests.test_subscriptions_cached#  s{    Hfh1	# ]]N];  c*  c*h07r   r
   NNN)#r   r   r   r   r  r   r   r  r  r  r   r  r  r  r  r  r"  r(  r-  r2  r7  r<  rB  rE  rH  rW  rb  rl  rt  r  r  r  r  r   __classcell__rk  s   @r   r  r    s    " (O CG4-	=
=++ ++ ($+	=
==++ ($0!'00"1"0"8888 8r   r  c                       \ rS rSrS rSrg)LookupBaseTestsi2  c                     SSK Jn  U$ )Nr   )
LookupBase)r{   r  )r?   r  s     r   r   LookupBaseTests._getTargetClass5  s    5r   r
   Nr   r   r   r   r   r   r
   r   r   r  r  2  s    r   r  c                   V    \ rS rSrS r\r  SS jrS rS rS r	S r
S	 rS
 rS rSrg)VerifyingBaseFallbackTestsi:  c                     SSK Jn  U$ )Nr   )VerifyingBaseFallback)r{   r  )r?   r  s     r   r  ,VerifyingBaseFallbackTests._getFallbackClass<  s    @$$r   Nc                    ^^^ Tc  S mTc  S mTc  S m " UUU4S jSU R                  5       5      nU" U5      nUR                  U5        U$ )Nc                     [        5       er;   r  r  s       r   r  6VerifyingBaseFallbackTests._makeOne.<locals>.uc_lookupG  r  r   c                     [        5       er;   r  r  s      r   r  9VerifyingBaseFallbackTests._makeOne.<locals>.uc_lookupAllL  r  r   c                     [        5       er;   r  r  s      r   r  =VerifyingBaseFallbackTests._makeOne.<locals>.uc_subscriptionsQ  r  r   c                   <   >^  \ rS rSr Yr Yr YrU 4S jrSrU =r	$ )4VerifyingBaseFallbackTests._makeOne.<locals>.DerivediT  c                 .   > [         TU ]  5         Xl        g r;   )rj  rc   	_registry)r?   r   rk  s     r   rc   =VerifyingBaseFallbackTests._makeOne.<locals>.Derived.__init__Y  s     "!)r   )r  )
r   r   r   r   r  r  r  rc   r   r  )rk  r  r  r  s   @r   r  r  T  s    (".&6#* *r   r  )r   r   )r?   r   r  r  r  r  deriveds     ```  r   r   #VerifyingBaseFallbackTests._makeOneB  sa     , , #,	* 	*d**, 	* (# r   c                 B   ^  " S S5      m " U4S jS5      nU" U5      $ )Nc                       \ rS rSrSrSrg)@VerifyingBaseFallbackTests._makeRegistry.<locals>.WithGenerationic  r   r
   N)r   r   r   r   r   r   r
   r   r   WithGenerationr  c  s    Kr   r  c                   "   > \ rS rSrU 4S jrSrg):VerifyingBaseFallbackTests._makeRegistry.<locals>.Registryif  c                 \   > [        U5       Vs/ s H
  nT" 5       PM     snU l        g s  snf r;   )rangero)r?   depthir  s      r   rc   CVerifyingBaseFallbackTests._makeRegistry.<locals>.Registry.__init__g  s#    5:5\B\>+\BBs   ))r  Nre   )r  s   r   Registryr  f  s    C Cr   r  r
   )r?   r  r  r  s      @r   _makeRegistry(VerifyingBaseFallbackTests._makeRegistrya  s%    	 		C 	C r   c                 0  ^^	 / m[        5       [        5       [        5       p2nXU/m	UU	4S jnU R                  S5      nU R                  XTS9nUR                  SSS5      nUR                  SSS5      nU R	                  Xq5        U R                  TS/5        U R                  T	X#/5        UR                  S   =R                  S-  sl        UR                  SSS5      nU R	                  Xr5        U R                  TSS/5        U R                  T	U/5        g )	Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  7VerifyingBaseFallbackTests.test_lookup.<locals>._lookupq  r  r   r7  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   test_lookup&VerifyingBaseFallbackTests.test_lookupl  s   (FHfha!9	#   #]]3]2		&#s+		&#s+e(:';<A6*q	"		&#s+e,.@A	CA3'r   c                 0  ^^	 / m[        5       [        5       [        5       p2nXU/m	UU	4S jnU R                  S5      nU R                  XTS9nUR                  SSS5      nUR                  SSS5      nU R	                  Xq5        U R                  TS/5        U R                  T	X#/5        UR                  S   =R                  S-  sl        UR                  SSS5      nU R	                  Xr5        U R                  TSS/5        U R                  T	U/5        g )	Nc                 L   > TR                  XU45        TR                  S5      $ r  r  r  s       r   r  8VerifyingBaseFallbackTests.test_lookup1.<locals>._lookup  r  r   r7  r  r  r  r  r  r   )r   r  r   r  r   r   r  r   r  s
           @@r   test_lookup1'VerifyingBaseFallbackTests.test_lookup1  s   (FHfha!9	#   #]]3]2

3S)

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

3S)e,.@A	CA3'r   c                 "  ^ ^^^ [        5       [        5       [        5       /u  mmnU4S jnU4S jnU 4S jnX#U/mU4S jn[        5       [        5       [        5       pnT R                  S5      n	T R                  XS9n
U
R                  XvSU5      nT R	                  UT5        U
R                  XvSU5      nT R	                  UT5        U	R
                  S   =R                  S-  sl        U
R                  XvSU5      nT R	                  UT5        g )	Nc                    > T$ r;   r
   rM  r  s    r   	_factory1?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory1      Hr   c                    > T$ r;   r
   rM  r  s    r   	_factory2?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory2  r  r   c                 (   > TR                  S5        g r  r}  rM  r?   s    r   	_factory3?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory3      II34r   c                 &   > TR                  S5      $ r  r  r?   r  r   r@   
_factoriess       r   r  =VerifyingBaseFallbackTests.test_adapter_hook.<locals>._lookup      >>!$$r   r7  r  r  r   )r   r  r   r?  r   r  r   r?   _cr  r  r  r  r@  rA  r  r   r  rV  r  r  r  s   `           @@@r   test_adapter_hook,VerifyingBaseFallbackTests.test_adapter_hook      Hfh11b			5  I6
	% $Xvx(  #]]3]2//#C:gq!//#C:gq!q	"//#C:gq!r   c                 "  ^ ^^^ [        5       [        5       [        5       /u  mmnU4S jnU4S jnU 4S jnX#U/mU4S jn[        5       [        5       [        5       pnT R                  S5      n	T R                  XS9n
U
R                  XgSU5      nT R	                  UT5        U
R                  XgSU5      nT R	                  UT5        U	R
                  S   =R                  S-  sl        U
R                  XvSU5      nT R	                  UT5        g )	Nc                    > T$ r;   r
   r  s    r   r  ?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory1  r  r   c                    > T$ r;   r
   r  s    r   r  ?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory2  r  r   c                 (   > TR                  S5        g r  r}  r  s    r   r  ?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory3  r  r   c                 &   > TR                  S5      $ r  r  r  s       r   r  =VerifyingBaseFallbackTests.test_queryAdapter.<locals>._lookup  r  r   r7  r  r  r   )r   r  r   rs  r   r  r   r?  r  s   `           @@@r   rt  ,VerifyingBaseFallbackTests.test_queryAdapter  r  r   c                   ^ [        5       [        5       [        5       /n[        5       [        5       [        5       /nX/mU4S jnU R                  S5      nU R                  XCS9nUR                  SS5      nU R	                  U[        U5      5        UR                  SS5      nU R	                  U[        U5      5        UR                  S   =R                  S-  sl        UR                  SS5      nU R	                  U[        U5      5        g )Nc                 8   > [        TR                  S5      5      $ r  r   r  r?   r  r   r  s      r   rz  =VerifyingBaseFallbackTests.test_lookupAll.<locals>._lookupAll      a))r   r7  r}  r  r  r   )r   r  r   r  r   r   r  r   )r?   
_results_1
_results_2rz  r   r  r  r  s          @r   test_lookupAll)VerifyingBaseFallbackTests.test_lookupAll  s    h&(3
h&(3
+	*   #]]3]8S#&j 12S#&j 12q	"S#&j 12r   c                   ^ [        5       [        5       [        5       /n[        5       [        5       [        5       /nX/mU4S jnU R                  S5      nU R                  XCS9nUR                  SS5      nU R	                  U[        U5      5        UR                  SS5      nU R	                  U[        U5      5        UR                  S   =R                  S-  sl        UR                  SS5      nU R	                  U[        U5      5        g )Nc                 8   > [        TR                  S5      5      $ r  r  r  s      r   r  EVerifyingBaseFallbackTests.test_subscriptions.<locals>._subscriptions  r  r   r7  r  r  r  r   )r   r  r   r  r   r   r  r   )r?   r  r  r  r   r  r  r  s          @r   test_subscriptions-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  r  r  r  rt  r  r  r   r
   r   r   r  r  :  s<    % (O>B"&>	(.(."8"83$3r   r  c                       \ rS rSrS rSrg)VerifyingBaseTestsi  c                     SSK Jn  U$ )Nr   )VerifyingBase)r{   r  )r?   r  s     r   r   "VerifyingBaseTests._getTargetClass  s    8r   r
   Nr  r
   r   r   r  r    s    r   r  c                      ^  \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rU 4S jrS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S'r)U =r*$ )(AdapterLookupBaseTestsi  c                     SSK Jn  U$ )Nr   )AdapterLookupBase)r{   r	  )r?   r	  s     r   r   &AdapterLookupBaseTests._getTargetClass  s    <  r   c                 .    U R                  5       " U5      $ r;   r   r   s     r   r   AdapterLookupBaseTests._makeOne  s    ##%h//r   c                 $     " S S5      nU" 5       $ )Nc                       \ rS rSrS rSrg)<AdapterLookupBaseTests._makeSubregistry.<locals>.Subregistryi
  c                      / U l         / U l        g r;   r   r   rL   s    r   rc   EAdapterLookupBaseTests._makeSubregistry.<locals>.Subregistry.__init__  s    !#$&!r   r  Nre   r
   r   r   Subregistryr  
  s    'r   r  r
   )r?   r   r  s      r   _makeSubregistry'AdapterLookupBaseTests._makeSubregistry  s    	' 	'
 }r   c                 &     " S S5      nU" U5      $ )Nc                       \ rS rSrS rSrg)6AdapterLookupBaseTests._makeRegistry.<locals>.Registryi  c                     Xl         / U l        g r;   r   r  r   s     r   rc   ?AdapterLookupBaseTests._makeRegistry.<locals>.Registry.__init__  s    !)r   r  Nre   r
   r   r   r  r    s    r   r  r
   )r?   r   r  s      r   r  $AdapterLookupBaseTests._makeRegistry  s    	 	
 !!r   c                 ~    U R                  5       nU R                  U5      nU R                  UR                  0 5        g r;   )r  r   r   r   )r?   r   albs      r   test_ctor_empty_registry/AdapterLookupBaseTests.test_ctor_empty_registry  s2    %%'mmH%,r   c                    SSK Jn  SSKJn  U" S5      nU" SU45      nU R	                  X45      nU R                  U5      nU R                  [        UR                  R                  5       5      [        XCU/5      5        U R                  UR                  U   X4/5        U R                  UR                  U   U/5        U R                  [        UR                  U   5      [        X4/5      5        g Nr   r   InterfaceClassIFooIBar)
r5   r   zope.interface.interfacer$  r  r   r   r   r   keysr?   r   r$  r%  r&  r   r  s          r   test_ctor_w_registry_provided4AdapterLookupBaseTests.test_ctor_w_registry_provided  s    ,;f%ftg.%%d1mmH% 3 3 56Y 78	:-|<-v6y 9:-	/r   c                      " S S5      n " S SU R                  5       U5      nU R                  5       nU" U5      nUR                  U5        g )Nc                       \ rS rSrS rSrg)AAdapterLookupBaseTests.test_changed_empty_required.<locals>.Mixini0  c                     g r;   r
   rT   s     r   r   IAdapterLookupBaseTests.test_changed_empty_required.<locals>.Mixin.changed1  r  r   r
   Nr   r   r   r   r   r   r
   r   r   Mixinr.  0      r   r2  c                       \ rS rSrSrg)CAdapterLookupBaseTests.test_changed_empty_required.<locals>.Derivedi4  r
   Nr   r
   r   r   r  r5  4  r   r   r  )r   r  r   )r?   r2  r  r   r  s        r   test_changed_empty_required2AdapterLookupBaseTests.test_changed_empty_required-  sI    	 		d**,e 	 %%'hCr   c                     " S S5      n " S SU R                  5       U5      n " S S5      nU" S5      nU" S5      nU R                  5       nU" U5      nS	UR                  U'   S	UR                  U'   UR                  U5        U R	                  [        UR                  5      S
5        U R	                  UR                  S 5        U R	                  UR                  U5        g )Nc                       \ rS rSrS rSrg)=AdapterLookupBaseTests.test_changed_w_required.<locals>.Mixini>  c                     g r;   r
   rT   s     r   r   EAdapterLookupBaseTests.test_changed_w_required.<locals>.Mixin.changed?  r  r   r
   Nr1  r
   r   r   r2  r:  >  r3  r   r2  c                       \ rS rSrSrg)?AdapterLookupBaseTests.test_changed_w_required.<locals>.DerivediB  r
   Nr   r
   r   r   r  r>  B  r   r   r  c                   *    \ rS rSrSrS rS rS rSrg)CAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakrefiE  Nc                     Xl         g r;   _here)r?   heres     r   rc   LAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.__init__H  s    !
r   c                 ,    U R                   (       a  U $ S $ r;   rB  rL   s    r   __call__LAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.__call__K  s    #zzt3t3r   c                     Xl         g r;   )_unsub)r?   targets     r   r@  OAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.unsubscribeN  s    $r   )rC  rJ  )	r   r   r   r   rJ  rc   rG  r@  r   r
   r   r   FauxWeakrefr@  E  s    F"4%r   rM  FTr   r   )r   r  	_requiredr   r   rK   rJ  )r?   r2  r  rM  gonerD  r   r  s           r   test_changed_w_required.AdapterLookupBaseTests.test_changed_w_required;  s    	 		d**,e 	
	% 
	% 5!4 %%'hddCS]]+Q/d+c*r   c                    SSK Jn  SSKJn  U" S5      nU" SU45      nU R	                  5       nU R                  U5      nX4/Ul        UR                  5         U R                  [        UR                  R                  5       5      [        XCU/5      5        U R                  UR                  U   X4/5        U R                  UR                  U   U/5        U R                  [        UR                  U   5      [        X4/5      5        g r"  )r5   r   r'  r$  r  r   r   init_extendorsr   r   r   r(  r)  s          r   )test_init_extendors_after_registry_update@AdapterLookupBaseTests.test_init_extendors_after_registry_update\  s    ,;f%ftg.%%'mmH%"\ 3 3 56Y 78	:-|<-v6y 9:-	/r   c                 &   SSK Jn  SSKJn  U" S5      nU" SU45      nU R	                  5       nU R                  U5      nUR                  U5        UR                  U5        U R                  [        UR                  R                  5       5      [        XCU/5      5        U R                  UR                  U   X4/5        U R                  UR                  U   U/5        U R                  [        UR                  U   5      [        X4/5      5        g r"  )r5   r   r'  r$  r  r   r   r   r   r   r(  r)  s          r   test_add_extendor(AdapterLookupBaseTests.test_add_extendorl  s    ,;f%ftg.%%'mmH% 3 3 56Y 78	:-|<-v6y 9:-	/r   c                    SSK Jn  SSKJn  U" S5      nU" SU45      nU R	                  X45      nU R                  U5      nUR                  U5        U R                  [        UR                  R                  5       5      [        X4U/5      5        U R                  UR                  U   U/5        U R                  UR                  U   U/5        U R                  [        UR                  U   5      [        U/5      5        g r"  )r5   r   r'  r$  r  r   r   r   r   r   r(  r)  s          r   test_remove_extendor+AdapterLookupBaseTests.test_remove_extendor|  s    ,;f%ftg.%%d1mmH%D! 3 3 56Y 78	:-v6-v6y 9:	)r   c                 ^   SSK Jn  U" S5      nU" SU45      nU R                  5       nU R                  U5      nUR	                  U4U5      nU R                  US 5        U R                  [        UR                  5      S5        U R                  UR                  5       UR                  5        g Nr   r#  r%  r&  r   )
r'  r$  r  r   r  r   rK   rN  r9  weakrefr?   r$  r%  r&  r   r  results          r   test__uncached_lookup_empty_ro5AdapterLookupBaseTests.test__uncached_lookup_empty_ro  s    ;f%ftg.%%'mmH%%%tgt4&S]]+Q/dllncmm4r   c                    SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       nUR                  R                  U5        U R                  U5      nUR                  U4U5      nU R                  US 5        g Nr   r#  r%  r&  )	r'  r$  r  r  r  rk   r   r  r   r?   r$  r%  r&  r   subrr  r`  s           r    test__uncached_lookup_order_miss7AdapterLookupBaseTests.test__uncached_lookup_order_miss  s    ;f%ftg.%%d1$$&4 mmH%%%tgt4&r   c                 4   SSK Jn  U" S5      nU" SU45      nU R                  5       nU R                  5       n0 0 /Ul        UR
                  R                  U5        U R                  U5      nXel        UR                  U4U5      nU R                  US 5        g rd  )r'  r$  r  r  r   r  rk   r   r   r  r   re  s           r   $test__uncached_lookup_extendors_miss;AdapterLookupBaseTests.test__uncached_lookup_extendors_miss  s    ;f%ftg.%%'$$&b4 mmH%%%tgt4&r   c                 f   SSK Jn  U" S5      nU" SU45      nU" S5      nU R                  X#5      nU R                  5       n[	        5       n0 UUSU000/Ul        UR                  R                  U5        U R                  U5      nXl	        UR                  U4U5      n	U R                  U	S 5        g Nr   r#  r%  r&  IQuxr   r'  r$  r  r  r   r   r  rk   r   r   r  r   
r?   r$  r%  r&  rn  r   rf  
irrelevantr  r`  s
             r   1test__uncached_lookup_components_miss_wrong_ifaceHAdapterLookupBaseTests.test__uncached_lookup_components_miss_wrong_iface  s    ;f%ftg.f%%%d1$$&X
2z*
 	4 mmH%%%tgt4&r   c                 V   SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n[	        5       n0 UUSU000/Ul        UR                  R                  U5        U R                  U5      nXul	        UR                  U4U5      nU R                  US 5        g Nr   r#  r%  r&  	wrongnamero  	r?   r$  r%  r&  r   rf  rv  r  r`  s	            r   0test__uncached_lookup_components_miss_wrong_nameGAdapterLookupBaseTests.test__uncached_lookup_components_miss_wrong_name  s    ;f%ftg.%%d1$$&H	;	2
 	4 mmH%%%tgt4&r   c                 R   SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n[	        5       n0 X#SU000/Ul        UR                  R                  U5        U R                  U5      nXul	        UR                  U4U5      nU R                  X5        g Nr   r#  r%  r&  r   r'  r$  r  r  r   r   r  rk   r   r   r  r   )	r?   r$  r%  r&  r   rf  	_expectedr  r`  s	            r    test__uncached_lookup_simple_hit7AdapterLookupBaseTests.test__uncached_lookup_simple_hit  s    ;f%ftg.%%d1$$&H	2y/*+
 	4 mmH%%%tgt4f(r   c                    SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n[	        5       n0 X#SU000/Ul        UR                  R                  U5        U R                  U5      nXul	        UR                  U4U5      nUR                  U4U5      n	U R                  X5        U R                  X5        g r{  r|  )
r?   r$  r%  r&  r   rf  r}  r  r`  result2s
             r   "test__uncached_lookup_repeated_hit9AdapterLookupBaseTests.test__uncached_lookup_repeated_hit  s    ;f%ftg.%%d1$$&H	2y/*+
 	4 mmH%%%tgt4&&w5f(g)r   c                    SSK Jn  SSKJn  U" S5      nU" SU45      nU" U5       " S S5      5       nU" 5       nU R	                  5       nU R                  5       n0 0 /Ul        UR                  R                  U5        U R                  U5      n	U	R                  U	l        Xl        [        5       n
U	R                  U4XJS9nU R                  X5        g )	Nr   implementerr#  r%  r&  c                       \ rS rSrSrg)FAdapterLookupBaseTests.test_queryMultiAdaptor_lookup_miss.<locals>.Fooi  r
   Nr   r
   r   r   Foor        r   r  default)zope.interface.declarationsr  r'  r$  r  r  r   r  rk   r   r  r  r   r   queryMultiAdapterr   )r?   r  r$  r%  r&  r  foor   rf  r  r  r`  s               r   "test_queryMultiAdaptor_lookup_miss9AdapterLookupBaseTests.test_queryMultiAdaptor_lookup_miss   s    ;;f%ftg.	T		 	 
	 e%%'$$&
 	4 mmH%))
8&&vt&Ff'r   c                    ^^ SSK Jn  SSKJn  U" S5      mU R	                  5       nU R                  U5      mTR                  Tl        UU4S jnUR                  XSS9  g )Nr   r#  )MissingSomeAttrsr%  c                 *   > TR                  U 4T5      $ r;   )r  )obr%  r  s    r   testVAdapterLookupBaseTests.test_queryMultiAdapter_errors_on_attribute_access.<locals>.test'  s    (( r   rk  )expected_missing)	r'  r$  zope.interface.testsr  r  r   r  r  test_raises)r?   r$  r  r   r  r%  r  s        @@r   1test_queryMultiAdapter_errors_on_attribute_accessHAdapterLookupBaseTests.test_queryMultiAdapter_errors_on_attribute_access  sX     	<9f%%%'mmH%))
	 	$$T+$Nr   c                   ^ SSK Jn  SSKJn  U" S5      nU" SU45      nU" U5       " S S5      5       nU" 5       nU R	                  X45      nU R                  5       n/ mU4S jn	0 X4S	U	000/Ul        UR                  R                  U5        U R                  U5      n
U
R                  U
l        Xl        [        5       nU
R                  U4XKS
9nU R                  X5        U R!                  TU/5        g )Nr   r  r#  r%  r&  c                       \ rS rSrSrg)GAdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss.<locals>.Fooi5  r
   Nr   r
   r   r   r  r  5  r  r   r  c                 (   > TR                  U 5        g r;   r  )rM  r  s    r   rO  LAdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss.<locals>._factory>  s    (r   r   r  )r  r  r'  r$  r  r  r   r  rk   r   r  r  r   r   r  r   r   )r?   r  r$  r%  r&  r  r  r   rf  rO  r  r  r`  r  s                @r   #test_queryMultiAdaptor_factory_miss:AdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss/  s    ;;f%ftg.	T		 	 
	 e%%d1$$&	) 2x.)*
 	4 mmH%))
8&&vt&Ff'u-r   c                   ^^ SSK Jn  SSKJn  U" S5      nU" SU45      nU" U5       " S S5      5       nU" 5       nU R	                  X45      nU R                  5       n[        5       m/ mUU4S jn	0 X4S	U	000/Ul        UR                  R                  U5        U R                  U5      n
U
R                  U
l        Xl        [        5       nU
R                  U4XKS
9nU R                  UT5        U R!                  TU/5        g )Nr   r  r#  r%  r&  c                       \ rS rSrSrg)FAdapterLookupBaseTests.test_queryMultiAdaptor_factory_hit.<locals>.FooiT  r
   Nr   r
   r   r   r  r  T  r  r   r  c                 *   > TR                  U 5        T$ r;   r  )rM  r  r}  s    r   rO  KAdapterLookupBaseTests.test_queryMultiAdaptor_factory_hit.<locals>._factory^  s    (r   r   r  )r  r  r'  r$  r  r  r   r   r  rk   r   r  r  r   r  r   r   )r?   r  r$  r%  r&  r  r  r   rf  rO  r  r  r`  r  r}  s                @@r   "test_queryMultiAdaptor_factory_hit9AdapterLookupBaseTests.test_queryMultiAdaptor_factory_hitN  s   ;;f%ftg.	T		 	 
	 e%%d1$$&H		
 2x.)*
 	4 mmH%))
8&&vt&Ffi(u-r   c                    >^ U R                  U R                  5       5      nU4S jnS mX!l        [        5       SS[        5       /nUR	                  US 5      nU R                  UU SSU 45        g )Nc                     > T$ r;   r
   )r  factorys    r   r  KAdapterLookupBaseTests.test_queryMultiAdapter_super_unwraps.<locals>.lookupr  s    Nr   c                      U $ r;   r
   )r  s    r   r  LAdapterLookupBaseTests.test_queryMultiAdapter_super_unwraps.<locals>.factoryu  s    Kr   r'   abc)r   r  r  rj  r  r   )r?   r  r  objectsr`  r  rk  s        @r   $test_queryMultiAdapter_super_unwraps;AdapterLookupBaseTests.test_queryMultiAdapter_super_unwrapso  sy    mmD..01		 
 GG	
 &&w5	"
 	r   c                 ^   SSK Jn  U" S5      nU" SU45      nU R                  5       nU R                  U5      nUR	                  U4U5      nU R                  US5        U R                  [        UR                  5      S5        U R                  UR                  5       UR                  5        g )Nr   r#  r%  r&  r
   r   )
r'  r$  r  r   r  r   rK   rN  r9  r^  r_  s          r   !test__uncached_lookupAll_empty_ro8AdapterLookupBaseTests.test__uncached_lookupAll_empty_ro  s    ;f%ftg.%%'mmH%(($$7$S]]+Q/dllncmm4r   c                 $   SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       nUR                  R                  U5        U R                  U5      nXel        UR                  U4U5      nU R                  US5        g Nr   r#  r%  r&  r
   )
r'  r$  r  r  r  rk   r   r   r  r   re  s           r   #test__uncached_lookupAll_order_miss:AdapterLookupBaseTests.test__uncached_lookupAll_order_miss  s    ;f%ftg.%%d1$$&4 mmH%(($$7$r   c                 4   SSK Jn  U" S5      nU" SU45      nU R                  5       nU R                  5       n0 0 /Ul        UR
                  R                  U5        U R                  U5      nXel        UR                  U4U5      nU R                  US5        g r  )r'  r$  r  r  r   r  rk   r   r   r  r   re  s           r   'test__uncached_lookupAll_extendors_miss>AdapterLookupBaseTests.test__uncached_lookupAll_extendors_miss  s    ;f%ftg.%%'$$&b4 mmH%(($$7$r   c                 d   SSK Jn  U" S5      nU" SU45      nU" S5      nU R                  X#5      nU R                  5       n[	        5       n0 X$SU000/Ul        UR                  R                  U5        U R                  U5      nXl	        UR                  U4U5      n	U R                  U	S5        g )Nr   r#  r%  r&  rn  r   r
   )r'  r$  r  r  r   r   r  rk   r   r   r  r   rp  s
             r   (test__uncached_lookupAll_components_miss?AdapterLookupBaseTests.test__uncached_lookupAll_components_miss  s    ;f%ftg.f%%%d1$$&X
2z*+,
 	4 mmH%(($$7$r   c                    SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n[	        5       n[	        5       n0 X#XgS.00/Ul        UR                  R                  U5        U R                  U5      nXl	        UR                  U4U5      n	U R                  [        U	5      SU4SU4/5        g Nr   r#  r%  r&  )r   namedr   r  )r'  r$  r  r  r   r   r  rk   r   r   r  r   r   
r?   r$  r%  r&  r   rf  r}  _namedr  r`  s
             r   #test__uncached_lookupAll_simple_hit:AdapterLookupBaseTests.test__uncached_lookupAll_simple_hit  s    ;f%ftg.%%d1$$&H	y:;<
 	4 mmH%(($$72y/GV;L)MNr   c                    SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n[	        5       n[	        5       n0 X#XgS.00/Ul        UR                  R                  U5        U R                  U5      nUR                  Ul
        Xl        UR                  U4U5      n	U R                  [        U	5      SS/5        g r  )r'  r$  r  r  r   r   r  rk   r   r  r  r   namesr   r   r  s
             r   
test_names!AdapterLookupBaseTests.test_names  s    ;f%ftg.%%d1$$&H	y:;<
 	4 mmH%//D7D)"g7r   c                 ^   SSK Jn  U" S5      nU" SU45      nU R                  5       nU R                  U5      nUR	                  U4U5      nU R                  U/ 5        U R                  [        UR                  5      S5        U R                  UR                  5       UR                  5        g r]  )
r'  r$  r  r   r  r   rK   rN  r9  r^  r_  s          r   %test__uncached_subscriptions_empty_ro<AdapterLookupBaseTests.test__uncached_subscriptions_empty_ro  s    ;f%ftg.%%'mmH%,,dWd;$S]]+Q/dllncmm4r   c                 $   SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       nUR                  R                  U5        U R                  U5      nXel        UR                  U4U5      nU R                  U/ 5        g rd  )
r'  r$  r  r  r  rk   r   r   r  r   re  s           r   'test__uncached_subscriptions_order_miss>AdapterLookupBaseTests.test__uncached_subscriptions_order_miss  s    ;f%ftg.%%d1$$&4 mmH%,,dWd;$r   c                 4   SSK Jn  U" S5      nU" SU45      nU R                  5       nU R                  5       n0 0 /Ul        UR
                  R                  U5        U R                  U5      nXel        UR                  U4U5      nU R                  U/ 5        g rd  )r'  r$  r  r  r   r  rk   r   r   r  r   re  s           r   +test__uncached_subscriptions_extendors_missBAdapterLookupBaseTests.test__uncached_subscriptions_extendors_miss  s    ;f%ftg.%%'$$&H4 mmH%,,dWd;$r   c                 d   SSK Jn  U" S5      nU" SU45      nU" S5      nU R                  X#5      nU R                  5       n[	        5       n0 X$SU000/Ul        UR                  R                  U5        U R                  U5      nXl	        UR                  U4U5      n	U R                  U	/ 5        g rm  r'  r$  r  r  r   r   r  rk   r   r   r  r   rp  s
             r   8test__uncached_subscriptions_components_miss_wrong_ifaceOAdapterLookupBaseTests.test__uncached_subscriptions_components_miss_wrong_iface  s    ;f%ftg.f%%%d1$$&X
2z*+,
 	4 mmH%,,dWd;$r   c                 T   SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n[	        5       n0 X#SU000/Ul        UR                  R                  U5        U R                  U5      nXul	        UR                  U4U5      nU R                  U/ 5        g ru  r  rw  s	            r   7test__uncached_subscriptions_components_miss_wrong_nameNAdapterLookupBaseTests.test__uncached_subscriptions_components_miss_wrong_name  s    ;f%ftg.%%d1$$&H	;	234
 	4 mmH%,,dWd;$r   c                    SSK Jn  U" S5      nU" SU45      nU R                  X#5      nU R                  5       n " S S5      nU" 5       U" 5       p0 X#SXx4000/Ul        UR
                  R                  U5        U R                  U5      n	Xl        U	R                  U4U5      n
U R                  [        U
5      [        Xx/5      5        g )Nr   r#  r%  r&  c                       \ rS rSrS rSrg)KAdapterLookupBaseTests.test__uncached_subscriptions_simple_hit.<locals>.Fooi2  c                     g)NTr
   rT   s     r   __lt__RAdapterLookupBaseTests.test__uncached_subscriptions_simple_hit.<locals>.Foo.__lt__4  s    r   r
   N)r   r   r   r   r  r   r
   r   r   r  r  2  s    r   r  r   )r'  r$  r  r  r   r  rk   r   r   r  r   r   )r?   r$  r%  r&  r   rf  r  _exp1_exp2r  r`  s              r   'test__uncached_subscriptions_simple_hit>AdapterLookupBaseTests.test__uncached_subscriptions_simple_hit+  s    ;f%ftg.%%d1$$&	 	
 uceu2~./0
 	4 mmH%,,dWd;)?@r   c                   ^ SSK Jn  SSKJn  U" S5      nU" SU45      nU" U5       " S S5      5       nU" 5       nU R	                  X45      nU R	                  X45      nU R                  5       n0 mU4S jn	U4S	 jn
0 US S
X4000/Ul        UR                  R                  U5        U R                  U5      nUR                  Ul        Xl        UR                  U4S 5      nU R                  US5        U R                  TU/U/S.5        g )Nr   r  r#  r%  r&  c                       \ rS rSrSrg)@AdapterLookupBaseTests.test_subscribers_wo_provided.<locals>.FooiH  r
   Nr   r
   r   r   r  r  H  r  r   r  c                 H   > TR                  S/ 5      R                  U 5        g Nr  
setdefaultrk   rM  _calleds    r   r  FAdapterLookupBaseTests.test_subscribers_wo_provided.<locals>._factory1R      {B/66w?r   c                 H   > TR                  S/ 5      R                  U 5        g Nr  r  r  s    r   r  FAdapterLookupBaseTests.test_subscribers_wo_provided.<locals>._factory2U  r  r   r   r
   )r  r  )r  r  r'  r$  r  r  r   r  rk   r   r  r  r   subscribersr   )r?   r  r$  r%  r&  r  r  r   rf  r  r  r  r`  r  s                @r   test_subscribers_wo_provided3AdapterLookupBaseTests.test_subscribers_wo_providedB  s   ;;f%ftg.	T		 	 
	 e%%d1%%d1$$&	@	@ D2	5678
 	4 mmH%77#.$SE"JKr   c                 ^  ^^^ SSK Jn  SSKJn  U" S5      nU" SU45      nU" U5       " S S5      5       nU" 5       nU R	                  X45      nU R	                  X45      nU R                  5       n0 m[        5       [        5       smmUU4S jn	UU4S	 jn
U4S
 jn0 X4SXU4000/Ul        UR                  R                  U5        U R                  U5      nUR                  Ul        Xl        UR                  U4U5      nU R                  UTT/5        U R                  TU/U/U/S.5        g )Nr   r  r#  r%  r&  c                       \ rS rSrSrg)?AdapterLookupBaseTests.test_subscribers_w_provided.<locals>.Fooij  r
   Nr   r
   r   r   r  r  j  r  r   r  c                 J   > TR                  S/ 5      R                  U 5        T$ r  r  )rM  r  r  s    r   r  EAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._factory1u  #    {B/66w?Lr   c                 J   > TR                  S/ 5      R                  U 5        T$ r  r  )rM  r  r  s    r   r  EAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._factory2y  r  r   c                 H   > TR                  S/ 5      R                  U 5        g )N_side_effect_onlyr  r  s    r   r  MAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._side_effect_only}  s    2B7>>wGr   r   )r  r  r  )r  r  r'  r$  r  r  r   r   r  rk   r   r  r  r   r  r   )r?   r  r$  r%  r&  r  r  r   rf  r  r  r  r  r`  r  r  r  s                 @@@r   test_subscribers_w_provided2AdapterLookupBaseTests.test_subscribers_w_providedd  s=   ;;f%ftg.	T		 	 
	 e%%d1%%d1$$&xu			H 2	6GHIJK
 	4 mmH%77#.%0!U!U&)U	
r   r
   )+r   r   r   r   r   r   r  r  r  r*  r6  rP  rT  rW  rZ  ra  rg  rj  rr  rx  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   r  r    s    !0"-
/+B/ / )"	5	''',',)"*&(2O,.>.B4	5
%%%$O$8&	5
%%%$%"A. LD,
 ,
r   r  c                   &    \ rS rSrS rS rS rSrg)VerifyingAdapterRegistryTestsi  c                     SSK Jn  U$ )Nr   )VerifyingAdapterRegistry)r{   r  )r?   r  s     r   r   -VerifyingAdapterRegistryTests._getTargetClass  s    C''r   c                 .    U R                  5       " U0 UD6$ r;   r   )r?   r  kws      r   r   &VerifyingAdapterRegistryTests._makeOne  s    ##%t2r22r   c                 L    SSK Jn  SSKJn  U R	                  5       nU" X5        g )Nr   )IAdapterRegistry)verifyObject)zope.interface.interfacesr  zope.interface.verifyr  r   )r?   r  r  r   s       r   ,test_verify_object_provides_IAdapterRegistryJVerifyingAdapterRegistryTests.test_verify_object_provides_IAdapterRegistry  s    >6==?%0r   r
   N)r   r   r   r   r   r   r  r   r
   r   r   r  r    s    (31r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)AdapterRegistryTestsi  c                     SSK Jn  U$ )Nr   )AdapterRegistry)r{   r  )r?   r  s     r   r   $AdapterRegistryTests._getTargetClass  s    :r   c                 n    U R                  5       nU R                  [        UR                  5      S5        g r  )r   r   rK   _v_subregistries)r?   ars     r   test_ctor_no_bases'AdapterRegistryTests.test_ctor_no_bases  s(    ]]_R00115r   c                    U R                  5       nU R                  U/5      nU R                  [        UR                  5      S5        U R                  [        UR                  5      S5        U R	                  X!R                  5        g r   )r   r   rK   r  r9  )r?   basesubs      r   test_ctor_w_bases&AdapterRegistryTests.test_ctor_w_bases  se    }}mmTF#S112A6T223Q7c001r   c                 B   U R                  5       nU R                  5       nU R                  U/5      nU/Ul        U R                  [        UR                  5      S5        U R                  [        UR                  5      S5        U R                  X2R                  5        g r   r   r   r   rK   r  r9  r?   beforeafterr   s       r   ,test__setBases_removing_existing_subregistryAAdapterRegistryTests.test__setBases_removing_existing_subregistry  sy    mmVH%V445q9U334a8c112r   c                    U R                  5       nU R                  5       nU R                  5       nU R                  U/5      nUR                  S   R                  U5        U/Ul        U R	                  [        UR                  5      S5        U R	                  [        UR                  5      S5        U R                  XCR                  5        g )Nr   r   r   )r   __dict__rk   r   r   rK   r  r9  )r?   r&  strayr'  r   s        r   test__setBases_wo_stray_entry2AdapterRegistryTests.test__setBases_wo_stray_entry  s    mmVH%[!((/V445q9U334a8c112r   c                 x   U R                  5       nU R                  5       nU R                  U/5      nX/Ul        U R                  [        UR                  5      S5        U R                  [        UR                  5      S5        U R                  X1R                  5        U R                  X2R                  5        g r   r$  r%  s       r   *test__setBases_w_existing_entry_continuing?AdapterRegistryTests.test__setBases_w_existing_entry_continuing  s    mmVH%V445q9U334a8c223c112r   c                 <   U R                  5       n " S S5      nU" 5       U" 5       pCUR                  U5        UR                  U5        [        5       nUR                  U5        U R	                  UR
                  U5        U R	                  UR
                  U5        g )Nc                       \ rS rSrSrS rSrg)BAdapterRegistryTests.test_changed_w_subregistries.<locals>.Derivedi  Nc                     Xl         g r;   r   )r?   originally_changeds     r   r   JAdapterRegistryTests.test_changed_w_subregistries.<locals>.Derived.changed  s     2r   r   )r   r   r   r   r   r   r   r
   r   r   r  r4    s    H3r   r  )r   _addSubregistryr   r   r   r   )r?   r  r  derived1derived2r   s         r   test_changed_w_subregistries1AdapterRegistryTests.test_changed_w_subregistries  s{    }}	3 	3 %Y	(X&X&xTh''.h''.r   r
   N)r   r   r   r   r   r  r!  r(  r-  r0  r;  r   r
   r   r   r  r    s%    623	33/r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	
Test_utilsi  c                 L    SSK Jn  SSKJn  U R	                  U" S 5      U5        g )Nr   _convert_None_to_Interfacer   )r{   rA  r'  r   r   )r?   rA  r   s      r   &test__convert_None_to_Interface_w_None1Test_utils.test__convert_None_to_Interface_w_None  s    E606	Br   c                 T    SSK Jn  [        5       nU R                  U" U5      U5        g )Nr   r@  )r{   rA  r   r   )r?   rA  rU   s      r   'test__convert_None_to_Interface_w_other2Test_utils.test__convert_None_to_Interface_w_other  s     E07?r   c                     SSK Jn  SnSnU" U5      nU R                  XC5        U R                  U[	        U5      5        g )Nr   _normalize_names   strstr)r{   rI  r   r   rS   )r?   rI  STRUNICODEnorms        r   test__normalize_name_str#Test_utils.test__normalize_name_str  s;    :s#'dDM2r   c                 D    SSK Jn  SnU R                  U" U5      U5        g )Nr   rH  ustr)r{   rI  r   )r?   rI  USTRs      r   test__normalize_name_unicode'Test_utils.test__normalize_name_unicode  s    :.5r   c                 j    SSK Jn  SSS/ 0 [        5       4 H  nU R                  [        X5        M     g )Nr   rH  r   g      ?r
   )r{   rI  r   r  	TypeError)r?   rI  rU   s      r   test__normalize_name_other%Test_utils.test__normalize_name_other	  s.    :RR1Ei@ 2r   r
   N)
r   r   r   r   rB  rE  rN  rS  rW  r   r
   r   r   r>  r>    s    C
@
36Ar   r>  )r  unittestr  r   r6   r8   r]   rg   rn   rr   TestCaseru   r  r  r  r  r  r  r  r  r>  r
   r   r   <module>r[     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   