o
    Êó·i‡C ã                   @   s"  d Z ddlZddlmZ dd„ ZG dd„ dƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZ	G dd„ dej
ƒZG dd„ deƒZG dd„ dej
ƒZG dd„ deeƒZG dd„ dej
ƒZG dd„ deeƒZG dd„ dej
ƒZG dd„ dej
ƒZG d d!„ d!eƒZG d"d#„ d#ej
ƒZdS )$zAdapter registry tests
é    N)ÚOptimizationTestMixinc            
   	   C   s¶   ddl m}  G dd„ d| ƒ}G dd„ d|ƒ}G dd„ d|ƒ}G d	d
„ d
||ƒ}G dd„ d||ƒ}G dd„ d| ƒ}G dd„ d|ƒ}G dd„ d| ƒ}G dd„ d|ƒ}	|||||||||	f	S )Nr   ©Ú	Interfacec                   @   ó   e Zd ZdS )z_makeInterfaces.<locals>.IB0N©Ú__name__Ú
__module__Ú__qualname__© r
   r
   úgC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\zope/interface/tests/test_adapter.pyÚIB0   ó    r   c                   @   r   )z_makeInterfaces.<locals>.IB1Nr   r
   r
   r
   r   ÚIB1   r   r   c                   @   r   )z_makeInterfaces.<locals>.IB2Nr   r
   r
   r
   r   ÚIB2!   r   r   c                   @   r   )z_makeInterfaces.<locals>.IB3Nr   r
   r
   r
   r   ÚIB3$   r   r   c                   @   r   )z_makeInterfaces.<locals>.IB4Nr   r
   r
   r
   r   ÚIB4'   r   r   c                   @   r   )z_makeInterfaces.<locals>.IF0Nr   r
   r
   r
   r   ÚIF0*   r   r   c                   @   r   )z_makeInterfaces.<locals>.IF1Nr   r
   r
   r
   r   ÚIF1-   r   r   c                   @   r   )z_makeInterfaces.<locals>.IR0Nr   r
   r
   r
   r   ÚIR00   r   r   c                   @   r   )z_makeInterfaces.<locals>.IR1Nr   r
   r
   r
   r   ÚIR13   r   r   )Úzope.interfacer   )
r   r   r   r   r   r   r   r   r   r   r
   r
   r   Ú_makeInterfaces   s   r   c                   @   sH   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )ÚCustomDataTypeBaseNc                 C   s
   | j | S ©N©Ú_data©ÚselfÚnamer
   r
   r   Ú__getitem__?   ó   
zCustomDataTypeBase.__getitem__c                 C   s   || j |< d S r   r   )r   r   Úvaluer
   r
   r   Ú__setitem__B   ó   zCustomDataTypeBase.__setitem__c                 C   s   | j |= d S r   r   r   r
   r
   r   Ú__delitem__E   ó   zCustomDataTypeBase.__delitem__c                 C   ó
   t | jƒS r   )Úlenr   ©r   r
   r
   r   Ú__len__H   r    zCustomDataTypeBase.__len__c                 C   s
   || j v S r   r   r   r
   r
   r   Ú__contains__K   r    zCustomDataTypeBase.__contains__c                 C   s,   || u rdS t |ƒt | ƒurdS |j| jkS )NTF)Útyper   ©r   Úotherr
   r
   r   Ú__eq__N   s
   zCustomDataTypeBase.__eq__c                 C   r&   r   )Úreprr   r(   r
   r
   r   Ú__repr__V   r    zCustomDataTypeBase.__repr__)r   r   r	   r   r   r"   r$   r)   r*   r.   r0   r
   r
   r
   r   r   <   s    r   c                   @   ó   e Zd Zddd„ZdS )ÚCustomMappingNc                 C   s.   i | _ |r| j  |¡ | j j| _| j j| _d S r   )r   ÚupdateÚgetÚitemsr,   r
   r
   r   Ú__init__[   s
   
zCustomMapping.__init__r   ©r   r   r	   r6   r
   r
   r
   r   r2   Z   ó    r2   c                   @   r1   )ÚCustomSequenceNc                 C   s$   g | _ |r| j  |¡ | j j| _d S r   )r   ÚextendÚappendr,   r
   r
   r   r6   d   s   zCustomSequence.__init__r   r7   r
   r
   r
   r   r9   c   r8   r9   c                   @   r   )ÚCustomLeafSequenceNr   r
   r
   r
   r   r<   k   r   r<   c                   @   r   )ÚCustomProvidedNr   r
   r
   r
   r   r=   o   r   r=   c                   @   sd  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdWdd„ZdWdd„Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dS )XÚBaseAdapterRegistryTestsNc                 C   ó   ddl m} |S )Nr   ©ÚBaseAdapterRegistry©Úzope.interface.adapterrA   )r   rA   r
   r
   r   Ú_getBaseAdapterRegistryw   ó   z0BaseAdapterRegistryTests._getBaseAdapterRegistryc                 C   s8   |   ¡ }G dd„ d|ƒ}|jD ]
}t|j|tƒ ƒ q|S )Nc                   @   s   e Zd ZG dd„ dƒZdS )z6BaseAdapterRegistryTests._getTargetClass.<locals>._CUTc                   @   s4   e Zd Zd ZZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )zBBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClassr
   c                 S   ó   d S r   r
   )r   Úregr
   r
   r   r6   ƒ   ó   zKBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.__init__c                 S   ó   |  j |f7  _ d S r   ©Ú_changed)r   Úorigr
   r
   r   Úchanged†   ó   zJBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.changedc                 S   rI   r   )Ú
_extendors©r   Úprovidedr
   r
   r   Úadd_extendor‰   rN   zOBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.add_extendorc                    s   t ‡ fdd„| jD ƒƒ| _d S )Nc                    s   g | ]}|ˆ kr|‘qS r
   r
   )Ú.0Úx©rQ   r
   r   Ú
<listcomp>�   s    
ÿzfBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.remove_extendor.<locals>.<listcomp>)ÚtuplerO   rP   r
   rU   r   Úremove_extendorŒ   s   zRBaseAdapterRegistryTests._getTargetClass.<locals>._CUT.LookupClass.remove_extendorN)	r   r   r	   rK   rO   r6   rM   rR   rX   r
   r
   r
   r   ÚLookupClass€   s    rY   N)r   r   r	   rY   r
   r
   r
   r   Ú_CUT~   s    rZ   )rD   Ú
_delegatedÚsetattrrY   Úobject)r   rA   rZ   r   r
   r
   r   Ú_getTargetClass{   s
   
z(BaseAdapterRegistryTests._getTargetClassc                 C   s
   |   ¡ ƒ S r   ©r^   r(   r
   r
   r   Ú_makeOne”   r    z!BaseAdapterRegistryTests._makeOnec                 C   ó   t S r   ©Údictr(   r
   r
   r   Ú_getMappingType—   rH   z(BaseAdapterRegistryTests._getMappingTypec                 C   ra   r   rb   r(   r
   r
   r   Ú_getProvidedTypeš   rH   z)BaseAdapterRegistryTests._getProvidedTypec                 C   ra   r   )Úlistr(   r
   r
   r   Ú_getMutableListType�   rH   z,BaseAdapterRegistryTests._getMutableListTypec                 C   ra   r   )rW   r(   r
   r
   r   Ú_getLeafSequenceType    rH   z-BaseAdapterRegistryTests._getLeafSequenceTypec                 C   s8   |   ¡ }|ƒ }|jD ]}|  t||ƒt|j|ƒ¡ q
d S r   )r^   r[   ÚassertIsÚgetattrÚ	_v_lookup)r   ZCUTÚregistryr   r
   r
   r   Útest_lookup_delegation£   s   
ÿÿz/BaseAdapterRegistryTests.test_lookup_delegationc                 C   s   |   ¡ }|  |jd¡ d S ©Né   )r`   ÚassertEqualÚ_generation©r   rl   r
   r
   r   Ú"test__generation_on_first_creation«   s   z;BaseAdapterRegistryTests.test__generation_on_first_creationc                 C   s>   |   ¡ }tƒ }| |¡ |  |jd¡ |  |jj||f¡ d S ©Né   )r`   r]   rM   rp   rq   rk   rK   )r   rl   rL   r
   r
   r   Ú&test__generation_after_calling_changed°   s
   
z?BaseAdapterRegistryTests.test__generation_after_calling_changedc                 C   s0   G dd„ dƒ}|   ¡ }|f|_|  |jd¡ d S )Nc                   @   r   )zQBaseAdapterRegistryTests.test__generation_after_changing___bases__.<locals>._BaseNr   r
   r
   r
   r   Ú_Base¹   r   rw   ru   )r`   Ú	__bases__rp   rq   )r   rw   rl   r
   r
   r   Ú)test__generation_after_changing___bases__¸   s   zBBaseAdapterRegistryTests.test__generation_after_changing___bases__ru   c                 C   sˆ   |   t|jƒ|¡ |  |j|  ¡ ¡ |  ¡ }|jD ]}|  ||¡ q|   |jd |ƒ ¡ |  |jd |¡ |   t|j|d  ƒd¡ d S ©Nr   ro   )rp   r'   Ú	_adaptersÚassertIsInstancerg   rd   ©r   rl   Úexpected_orderÚMTÚmappingr
   r
   r   Ú_check_basic_types_of_adapters¿   s   
ÿ
z7BaseAdapterRegistryTests._check_basic_types_of_adaptersc                 C   s�   |   t|jƒ|¡ |  |j|  ¡ ¡ |  ¡ }|jD ]}|  ||¡ q|rF|   |jd |ƒ ¡ |  |jd |¡ |   t|j|d  ƒd¡ d S d S rz   )rp   r'   Ú_subscribersr|   rg   rd   r}   r
   r
   r   Ú!_check_basic_types_of_subscribersË   s   
ÿ
ÿ
ýz:BaseAdapterRegistryTests._check_basic_types_of_subscribersc              
   C   sÚ   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |g|dd¡ |  |
 |g|d¡d¡ |  |
jd¡ |  |
¡ |  ¡ }|  |
jd |||||ddiƒiƒiƒ¡ |  	¡ }|  |
j
||diƒ¡ t|
 ¡ ƒ}|  ||f|ddfg¡ d S )NÚ ÚA1ru   ro   )r   r`   Úregisterrp   Ú
registeredrq   r�   rd   r{   re   Ú	_providedrf   ÚallRegistrations)r   r   r   r   r   r   r   r   r   r   rl   r   ÚPTr‡   r
   r
   r   Útest_registerÚ   s2   þ
ÿÿ
ÿüz&BaseAdapterRegistryTests.test_registerc           
         s$  t ƒ \	‰ ‰‰‰}}}‰‰|  ¡ }| g ˆdd¡ | g ˆdd¡ | ˆ gˆdd¡ | ˆ gˆdd¡ | ˆ gˆdd¡ | ˆ gˆdd¡ | ˆ ˆgˆdd¡ | ˆ ˆgˆdd¡ | ˆ ˆgˆd	d¡ | ˆ ˆgˆdd¡ ‡ ‡‡‡‡‡fd
d„}|  |j||  ¡ |  ¡ d�¡ t| ¡ ƒ}|  |dˆddfdˆddfˆ fˆddfˆ fˆddfˆ fˆddfˆ fˆddfˆ ˆfˆddfˆ ˆfˆddfˆ ˆfˆd	dfˆ ˆfˆddfg
¡ |  ¡ }|D ]}|j|Ž  qÖ|  |j|j¡ |  |j	|j	¡ t
|_t|_t|_t|_dd„ }	|	|_| ¡  |  |j|tt
d�¡ d S )Nr„   r…   Úname1ÚA2Úname2ÚA3Úname3ÚA4Úname4c                    sœ   | |ˆ|dddœƒiƒ|ˆ |ˆ|dddœƒˆ|dddœƒiƒiƒ|ˆ |ˆ|ˆ|ddiƒiƒˆ|ˆ|d	diƒˆ|d
diƒiƒˆ|ˆ|ddiƒiƒiƒiƒgƒS )Nr…   r�   )r„   rŒ   )r„   rŽ   r�   r‘   )r„   r�   r„   rŽ   r’   r
   ©ÚLr   ©r   r   r   r   r   r   r
   r   Úbuild_adapters	  sD   þÿþþûÿÿþÿøÿêzXBaseAdapterRegistryTests.test_register_multiple_allRegistrations.<locals>.build_adaptersr“   r
   c                 S   ó    | d ur| nt ƒ } |  |¡ | S r   ©r<   r;   ©ÚexistingÚnewr
   r
   r   ÚaddValueP  ó   ÿ
zRBaseAdapterRegistryTests.test_register_multiple_allRegistrations.<locals>.addValue)r   r`   r†   rp   r{   rg   rd   Úsortedr‰   rˆ   r2   Ú_mappingTyper<   Ú_leafSequenceTyper9   Ú_sequenceTyper=   Ú_providedTypeÚ_addValueToLeafÚrebuild)
r   r   r   r   rl   r–   r‡   Ú	registry2Úargsrœ   r
   r•   r   Ú'test_register_multiple_allRegistrationsö   sf   þ'ÿÿ

öþÿz@BaseAdapterRegistryTests.test_register_multiple_allRegistrationsc              	   C   sd   t ƒ \	}}}}}}}}}	|  ¡ }
|  t¡� |
 |g|tƒ d¡ W d   ƒ d S 1 s+w   Y  d S ©Nr…   )r   r`   ÚassertRaisesÚ
ValueErrorr†   r]   ©r   r   r   r   r   r   r   r   r   r   rl   r
   r
   r   Útest_register_with_invalid_namea  s   þ"ÿz8BaseAdapterRegistryTests.test_register_with_invalid_namec              	   C   s„   t ƒ \	}}}}}}}}}	|  ¡ }
|
 d g|dd¡ |
 d g|dd ¡ |  t|
jƒd¡ |  |
j|  ¡ ¡ t|
 	¡ ƒ}|  |g ¡ d S )Nr„   r…   r   )
r   r`   r†   rp   r'   r{   r|   rg   rf   r‰   )r   r   r   r   r   r   r   r   r   r   rl   r‡   r
   r
   r   Ú)test_register_with_value_None_unregistersi  s   þzBBaseAdapterRegistryTests.test_register_with_value_None_unregistersc              
   C   sÎ   ddl m} tƒ \	}}}}}}}}	}
|  ¡ }tƒ }| d g|	d|¡ |j}| d g|	d|¡ |  |j|¡ |  |¡ |  	¡ }|  |j
d ||||	|d|iƒiƒiƒ¡ t| ¡ ƒ}|  ||f|	d|fg¡ d S )Nr   r   r„   ro   )r   r   r   r`   r]   r†   rq   rp   r�   rd   r{   rf   r‰   )r   r   r   r   r   r   r   r   r   r   r   rl   Ú_valueZ_beforer   r‡   r
   r
   r   Útest_register_with_same_valueu  s4   þ
ÿÿÿÿ	üz6BaseAdapterRegistryTests.test_register_with_same_valuec                 C   s<   |   ¡ }|  | d gd d¡d ¡ t| ¡ ƒ}|  |g ¡ d S ©Nr„   )r`   rp   r‡   rf   r‰   )r   rl   r‡   r
   r
   r   Útest_registered_empty“  s   z.BaseAdapterRegistryTests.test_registered_emptyc              	   C   sN   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |gd dd¡ |  |
 |gd d¡d ¡ d S ©Nr„   r…   )r   r`   r†   rp   r‡   r«   r
   r
   r   Útest_registered_non_empty_miss™  s   þz7BaseAdapterRegistryTests.test_registered_non_empty_missc                 C   s6   |   ¡ }| d gd dd¡ |  | d gd d¡d¡ d S r²   )r`   r†   rp   r‡   rr   r
   r
   r   Útest_registered_non_empty_hit¡  s   z6BaseAdapterRegistryTests.test_registered_non_empty_hitc                 C   sF   |   ¡ }| d gd d¡ |  | d gd d¡d ¡ |  t|jƒd¡ d S )Nr„   r   )r`   Ú
unregisterrp   r‡   r'   rˆ   rr   r
   r
   r   Útest_unregister_empty¦  s   z.BaseAdapterRegistryTests.test_unregister_emptyc              
   C   s¸   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |gd dd¡ |
 |gd d¡ |  |
 |gd d¡d¡ |  |
¡ |  ¡ }|  |
jd |||d |ddiƒiƒiƒ¡ |  	¡ }|  |
j
|d diƒ¡ d S )Nr„   r…   ro   ©r   r`   r†   rµ   rp   r‡   r�   rd   r{   re   rˆ   ©r   r   r   r   r   r   r   r   r   r   rl   r   rŠ   r
   r
   r   Ú*test_unregister_non_empty_miss_on_required¬  ó(   þ
ÿÿÿÿ	
ÿzCBaseAdapterRegistryTests.test_unregister_non_empty_miss_on_requiredc              
   C   s¸   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |gd dd¡ |
 |gd d¡ |  |
 |gd d¡d¡ |  |
¡ |  ¡ }|  |
jd |||d |ddiƒiƒiƒ¡ |  	¡ }|  |
j
|d diƒ¡ d S )Nr„   r…   Znonesuchro   r·   r¸   r
   r
   r   Ú&test_unregister_non_empty_miss_on_nameÄ  rº   z?BaseAdapterRegistryTests.test_unregister_non_empty_miss_on_namec              	   C   sl   t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }tƒ }|
 |gd d|¡ |
 |gd d|¡ |  |
 |gd d¡|¡ d S r°   )r   r`   r]   r†   rµ   ri   r‡   ©r   r   r   r   r   r   r   r   r   r   rl   rL   Znomatchr
   r
   r   Ú(test_unregister_with_value_not_None_missÜ  s   þzABaseAdapterRegistryTests.test_unregister_with_value_not_None_missc                 C   s†  t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }tƒ }|
 ||gd d|¡ |
 ||gd d|¡ | j|
dd� |  ||
jd | ¡ |  ||
jd | ¡ |  ¡ }|  |
jd |||||d |d|iƒiƒ||d |d|iƒiƒiƒiƒ¡ |  	¡ }|  |
j
|d diƒ¡ |
 ||gd d|¡ |  ||
jd | ¡ |  ||
jd | ¡ |  |
jd |||||d |d|iƒiƒiƒiƒ¡ |  |
j
|d diƒ¡ d S )Nr„   é   ©r~   ru   ro   )r   r`   r]   r†   r�   ÚassertInr{   rd   rp   re   rˆ   rµ   ZassertNotIn)r   r   r   r   r   r   r   r   r   r   rl   ZoneZanotherr   rŠ   r
   r
   r   Ú.test_unregister_hit_clears_empty_subcomponentsç  sJ   þþÿÿÿ

ÿÿÿÿÿ
	ÿzGBaseAdapterRegistryTests.test_unregister_hit_clears_empty_subcomponentsc                 C   sB   |   ¡ }| d gd d¡ |  | d gd d¡d ¡ | j|dd� d S )Nr„   r   r¿   )r`   Úunsubscriberp   r‡   rƒ   rr   r
   r
   r   Útest_unsubscribe_empty  s   z/BaseAdapterRegistryTests.test_unsubscribe_emptyc                 C   sÒ   t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }|
 |gd |¡ |  ¡ }|  ¡ }|  ¡ }|  |
¡ |  |
j	d |||d |d||fƒiƒiƒiƒ¡ |  |
j
|i ƒ¡ |
 |gd |¡ |  t|
j	ƒd¡ |  |
j
|i ƒ¡ d S )Nro   r„   r   )r   r`   r]   Ú	subscriberd   rh   re   rƒ   rp   r‚   rˆ   rÂ   r'   )r   r   r   r   r   r   r   r   r   r   rl   rL   r   r”   rŠ   r
   r
   r   Útest_unsubscribe_hit  s*   þ

ÿÿÿz-BaseAdapterRegistryTests.test_unsubscribe_hitc                 C   s   |   ||¡ dS )a¦  
        Implementations may choose to use new, immutable objects
        instead of mutating existing subscriber leaf objects, or vice versa.

        The default implementation uses immutable tuples, so they are never
        the same. Other implementations may use persistent lists so they
        should be the same and mutated in place. Subclasses testing this
        behaviour need to override this method.
        N)ZassertIsNot©r   Zleaf1Zleaf2r
   r
   r   ÚassertLeafIdentity0  s   
z+BaseAdapterRegistryTests.assertLeafIdentityc                 C   s*  t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }tƒ }tƒ }tƒ }|
 |gd |¡ |
 |gd |¡ |
 |g||¡ |
 |g||¡ | j|
dd� |  ¡ }|  ¡ }|  ¡ }|  |
j	d |||d |d|||fƒiƒ||d|||fƒiƒiƒiƒ¡ |  |
j
||diƒ¡ |
j	d | | d }|
j	d | d  d }|
 |gd |¡ |
 |g||¡ |  |
j	d |||d |d||fƒiƒ||d||fƒiƒiƒiƒ¡ |  |
j
||diƒ¡ |
j	d | | d }|
j	d | d  d }|  ||¡ |  ||¡ |
 |gd |¡ |
 |g||¡ |  t|
j	ƒd¡ |  t|
j
ƒd¡ d S )Nru   r¿   ro   r„   r   )r   r`   r]   rÄ   rƒ   rd   rh   re   rp   r‚   rˆ   rÂ   rÇ   r'   )r   r   r   r   r   r   r   r   r   r   rl   ÚfirstÚsecondÚthirdZfourthr   r”   rŠ   ZIR0_leaf_origZNon_leaf_origZIR0_leaf_newZNon_leaf_newr
   r
   r   Útest_unsubscribe_after_multiple<  s\   þþÿ
ÿþÿ
ÿz8BaseAdapterRegistryTests.test_unsubscribe_after_multiplec                 C   sì   t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }|
 |g||¡ |
 |g||¡ |  ¡ }|  ¡ }|  ¡ }|  |
jd |||||d|||fƒiƒiƒiƒ¡ |  |
j	||diƒ¡ |
 
|g||¡ |
 
|g||¡ |  t|
jƒd¡ |  |
j	|ƒ ¡ d S ©Nro   r„   ru   r   ©r   r`   r]   rÄ   rd   rh   re   rp   r‚   rˆ   rÂ   r'   )r   r   r   r   r   r   r   r   r   r   rl   rÈ   r   r”   rŠ   r
   r
   r   Ú5test_subscribe_unsubscribe_identical_objects_providedr  s,   þÿÿ
ÿzNBaseAdapterRegistryTests.test_subscribe_unsubscribe_identical_objects_providedc                 C   sò   t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }tƒ }|
 |g||¡ |
 |g||¡ |  ¡ }|  ¡ }|  ¡ }|  |
jd |||||d|||fƒiƒiƒiƒ¡ |  |
j	||diƒ¡ |
 
|g||¡ |
 
|g||¡ |  t|
jƒd¡ |  |
j	|ƒ ¡ d S rÌ   rÍ   )r   r   r   r   r   r   r   r   r   r   rl   rÈ   rÉ   r   r”   rŠ   r
   r
   r   Ú4test_subscribe_unsubscribe_nonequal_objects_provided�  s.   þÿÿ
ÿzMBaseAdapterRegistryTests.test_subscribe_unsubscribe_nonequal_objects_providedc                 C   s:   |   ¡ }|  | d gd d¡¡ t| ¡ ƒ}|  |g ¡ d S r°   )r`   ÚassertIsNoneÚ
subscribedrf   ÚallSubscriptionsrp   )r   rl   rÑ   r
   r
   r   Útest_subscribed_empty©  s   z.BaseAdapterRegistryTests.test_subscribed_emptyc              	   C   sv   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |g|d¡ |  |
 |g|d¡¡ |  |
 |g|d¡¡ |  |
 |g|d¡¡ d S )Nr…   r„   )r   r`   rÄ   rÐ   rÑ   r«   r
   r
   r   Útest_subscribed_non_empty_miss¯  s   þz7BaseAdapterRegistryTests.test_subscribed_non_empty_missc              	   C   sL   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |g|d¡ |  |
 |g|d¡d¡ d S r¨   )r   r`   rÄ   rp   rÑ   r«   r
   r
   r   Útest_subscribed_non_empty_hit¼  s   þz6BaseAdapterRegistryTests.test_subscribed_non_empty_hitc              	   C   s~   t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }tƒ }|
 |gd |¡ |
 |gd |¡ | j|
dd� |
 |gd ¡ |  t|
jƒd¡ d S )Nru   r¿   r   )	r   r`   r]   rÄ   rƒ   rÂ   rp   r'   r‚   )r   r   r   r   r   r   r   r   r   r   rl   rÈ   rÉ   r
   r
   r   Ú&test_unsubscribe_w_None_after_multipleÄ  s   þz?BaseAdapterRegistryTests.test_unsubscribe_w_None_after_multiplec                 C   s¢   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |gd d¡ | j|
dd� |
 |gd d¡ |  t|
jƒd¡ |  ¡ }|  	¡ }|  |
jd |||d |d|dƒiƒiƒiƒ¡ d S )Nr…   ru   r¿   r„   ro   ©r…   ©
r   r`   rÄ   rƒ   rÂ   rp   r'   r‚   rd   rh   ©r   r   r   r   r   r   r   r   r   r   rl   r   r”   r
   r
   r   Ú+test_unsubscribe_non_empty_miss_on_requiredÒ  ó   þÿÿzDBaseAdapterRegistryTests.test_unsubscribe_non_empty_miss_on_requiredc                 C   s¢   t ƒ \	}}}}}}}}}	|  ¡ }
|
 |gd d¡ | j|
dd� |
 |gd d¡ |  t|
jƒd¡ |  ¡ }|  	¡ }|  |
jd |||d |d|dƒiƒiƒiƒ¡ d S )Nr…   ru   r¿   r�   ro   r„   r×   rØ   rÙ   r
   r
   r   Ú(test_unsubscribe_non_empty_miss_on_valueã  rÛ   zABaseAdapterRegistryTests.test_unsubscribe_non_empty_miss_on_valuec              	   C   sb   t ƒ \	}}}}}}}}}	|  ¡ }
tƒ }tƒ }|
 |gd |¡ |
 |gd |¡ |  t|
jƒd¡ d S rt   )r   r`   r]   rÄ   rÂ   rp   r'   r‚   r¼   r
   r
   r   Ú)test_unsubscribe_with_value_not_None_missô  s   þzBBaseAdapterRegistryTests.test_unsubscribe_with_value_not_None_missc                 C   ó   |   d¡ d S )Nz*Example method, not intended to be called.©Zfailr(   r
   r
   r   Ú_instance_method_notify_targetÿ  r#   z7BaseAdapterRegistryTests._instance_method_notify_targetc              	   C   sl   t ƒ \	}}}}}}}}}	|  ¡ }
|  t|
jƒd¡ |
 |gd | j¡ |
 |gd | j¡ |  t|
jƒd¡ d S ©Nr   )r   r`   rp   r'   r‚   rÄ   rà   rÂ   r«   r
   r
   r   Ú test_unsubscribe_instance_method  s   þz9BaseAdapterRegistryTests.test_unsubscribe_instance_methodc                    s*  t ƒ \	‰ ‰‰‰}}}‰‰|  ¡ }| g ˆd¡ | g ˆd¡ | ˆ gˆd¡ | ˆ gˆd¡ | ˆ gˆd¡ | ˆ gˆd¡ | ˆ ˆgˆd¡ | ˆ ˆgˆd¡ | ˆ ˆgˆd¡ | ˆ ˆgˆd¡ ‡ ‡‡‡‡‡fdd„}|  |j||  ¡ |  ¡ |  ¡ d�¡ ‡‡fdd	„}|  |j||  	¡ d
�¡ t
| ¡ ƒ}|  |dˆdfdˆdfˆ fˆdfˆ fˆdfˆ fˆdfˆ fˆdfˆ ˆfˆdfˆ ˆfˆdfˆ ˆfˆdfˆ ˆfˆdfg
¡ |  ¡ }|D ]}	|j|	Ž  qØ|  |j|j¡ |  |j|j¡ t|_t|_t|_t|_dd„ }
|
|_| ¡  |  |j|tttd�¡ d S )Nr…   r�   r�   r‘   c                    sÆ   | |ˆ|d|ddgƒiƒiƒ|ˆ |ˆ|d|ddgƒiƒˆ|d|ddgƒiƒiƒiƒ|ˆ |ˆ|ˆ|d|dgƒiƒiƒˆ|ˆ|d|dgƒiƒˆ|d|dgƒiƒiƒˆ|ˆ|d|dgƒiƒiƒiƒiƒgƒS )Nr„   r…   r�   r�   r‘   r
   ©r”   ÚFr   r•   r
   r   Úbuild_subscribers   s>   ÿÿÿÿüÿÿþÿøÿíz\BaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.build_subscribersrã   c                    s   | ˆ dˆdiƒS )Né   é   r
   ©ÚP)r   r   r
   r   Úbuild_providedK  s   þzYBaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.build_providedrè   r
   c                 S   r—   r   r˜   r™   r
   r
   r   rœ   p  r�   zSBaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations.<locals>.addValue)r   r`   rÄ   rp   r‚   rg   rh   rd   rˆ   re   rž   rÒ   r2   rŸ   r<   r    r9   r¡   r=   r¢   r£   r¤   )r   r   r   r   rl   rå   rê   r‡   r¥   r¦   rœ   r
   r•   r   Ú(test_subscribe_multiple_allRegistrations  st   þ$ýÿÿ



öýÿzABaseAdapterRegistryTests.test_subscribe_multiple_allRegistrations)ru   ).r   r   r	   ZmaxDiffrD   r^   r`   rd   re   rg   rh   rm   rs   rv   ry   r�   rƒ   r‹   r§   r¬   r­   r¯   r±   r³   r´   r¶   r¹   r»   r½   rÁ   rÃ   rÅ   rÇ   rË   rÎ   rÏ   rÓ   rÔ   rÕ   rÖ   rÚ   rÜ   rÝ   rà   râ   rë   r
   r
   r
   r   r>   s   sX    

k,6r>   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )Ú#CustomTypesBaseAdapterRegistryTestszá
    This class may be extended by other packages to test their own
    adapter registries that use custom types. (So be cautious about
    breaking changes.)

    One known user is ``zope.component.persistentregistry``.
    c                 C   ra   r   )r2   r(   r
   r
   r   rd   Œ  rH   z3CustomTypesBaseAdapterRegistryTests._getMappingTypec                 C   ra   r   )r=   r(   r
   r
   r   re   �  rH   z4CustomTypesBaseAdapterRegistryTests._getProvidedTypec                 C   ra   r   )r9   r(   r
   r
   r   rg   ’  rH   z7CustomTypesBaseAdapterRegistryTests._getMutableListTypec                 C   ra   r   )r<   r(   r
   r
   r   rh   •  rH   z8CustomTypesBaseAdapterRegistryTests._getLeafSequenceTypec                    s&   ddl m‰  G ‡ ‡fdd„dˆ ƒ}|S )Nr   r@   c                       s@   e Zd Z” ¡ Z” ¡ Z” ¡ Z” 	¡ Z
dd„ Z‡ fdd„ZdS )zZCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistryc                 S   s   |s|   ¡ }| |¡ |S r   )r    r;   )r   Úexisting_leaf_sequenceZnew_itemr
   r
   r   r£   ¡  s   
zjCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistry._addValueToLeafc                    s*   ˆ   | ||¡}||d d …< ||vsJ ‚|S r   )Ú_removeValueFromLeaf)r   rí   Ú	to_removeZwithout_removedr@   r
   r   rî   §  s   ýzoCustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistry.<locals>.CustomAdapterRegistry._removeValueFromLeafN)r   r   r	   rd   rŸ   rg   r¡   rh   r    re   r¢   r£   rî   r
   ©rA   r   r
   r   ÚCustomAdapterRegistry›  s    rñ   rB   )r   rñ   r
   rð   r   rD   ˜  s   z;CustomTypesBaseAdapterRegistryTests._getBaseAdapterRegistryc                 C   s   |   ||¡ d S r   )ri   rÆ   r
   r
   r   rÇ   ²  s   z6CustomTypesBaseAdapterRegistryTests.assertLeafIdentityN)
r   r   r	   Ú__doc__rd   re   rg   rh   rD   rÇ   r
   r
   r
   r   rì   ƒ  s    rì   c                       sü   e Zd Zdd„ ZeZ	d:dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Z‡ fd.d/„Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Z‡  Z S );ÚLookupBaseFallbackTestsc                 C   r?   )Nr   )ÚLookupBaseFallback)rC   rô   )r   rô   r
   r
   r   Ú_getFallbackClass¸  rE   z)LookupBaseFallbackTests._getFallbackClassNc                    sR   ˆ d u rdd„ ‰ ˆd u rdd„ ‰ˆd u rdd„ ‰G ‡ ‡‡fdd„d|   ¡ ƒ}|ƒ S )	Nc                 S   rF   r   r
   ©r   ÚrequiredrQ   r   r
   r
   r   Ú	uc_lookupÄ  rH   z3LookupBaseFallbackTests._makeOne.<locals>.uc_lookupc                 S   ó   t ƒ ‚r   ©ÚNotImplementedError©r   r÷   rQ   r
   r
   r   Úuc_lookupAllÉ  ó   z6LookupBaseFallbackTests._makeOne.<locals>.uc_lookupAllc                 S   rù   r   rú   rü   r
   r
   r   Úuc_subscriptionsÎ  rþ   z:LookupBaseFallbackTests._makeOne.<locals>.uc_subscriptionsc                       s   e Zd Z” Z”Z”ZdS )z1LookupBaseFallbackTests._makeOne.<locals>.DerivedN)r   r   r	   Ú_uncached_lookupÚ_uncached_lookupAllÚ_uncached_subscriptionsr
   ©rø   rý   rÿ   r
   r   ÚDerivedÑ  s    r  r_   )r   rø   rý   rÿ   r  r
   r  r   r`   ¾  s   z LookupBaseFallbackTests._makeOnec                 C   óT   dd„ }| j |d�}|  t¡� | ddtƒ ¡ W d   ƒ d S 1 s#w   Y  d S )Nc                 S   rÞ   ©NzThis should never be calledrß   rö   r
   r
   r   Ú_lookupÚ  r#   zCLookupBaseFallbackTests.test_lookup_w_invalid_name.<locals>._lookup©rø   ©ÚAÚB)r`   r©   rª   Úlookupr]   ©r   r  Úlbr
   r
   r   Útest_lookup_w_invalid_nameØ  ó
   "ÿz2LookupBaseFallbackTests.test_lookup_w_invalid_namec                    óF   g ‰ ‡ fdd„}| j |d�}| ddd¡}|  |¡ |  ˆ dg¡ d S )Nc                    ó   ˆ   |||f¡ d S r   ©r;   rö   ©Ú_called_withr
   r   r  ä  rN   zDLookupBaseFallbackTests.test_lookup_miss_no_default.<locals>._lookupr  r	  r  ÚC©r	  r  r  )r`   r  rÐ   rp   ©r   r  r  Úfoundr
   r  r   Útest_lookup_miss_no_defaultá  ó   
z3LookupBaseFallbackTests.test_lookup_miss_no_defaultc                    óP   g ‰ t ƒ }‡ fdd„}| j|d�}| ddd|¡}|  ||¡ |  ˆ dg¡ d S )Nc                    r  r   r  rö   r  r
   r   r  ð  rN   zCLookupBaseFallbackTests.test_lookup_miss_w_default.<locals>._lookupr  r	  r  r  r  ©r]   r`   r  ri   rp   ©r   Ú_defaultr  r  r  r
   r  r   Útest_lookup_miss_w_defaultì  ó   z2LookupBaseFallbackTests.test_lookup_miss_w_defaultc                    óz   g ‰ t ƒ t ƒ t ƒ }}}|||g‰‡ ‡fdd„}| j|d�}| ddd¡}|  ||¡ |  ˆ dg¡ |  ˆ||g¡ d S )Nc                    ó   ˆ   |||f¡ ˆ d¡S rá   ©r;   Úpoprö   ©r  Ú_resultsr
   r   r  ý  ó   
z?LookupBaseFallbackTests.test_lookup_not_cached.<locals>._lookupr  r	  r  r  r  r  ©r   ÚaÚbÚcr  r  r  r
   r&  r   Útest_lookup_not_cachedø  ó   
z.LookupBaseFallbackTests.test_lookup_not_cachedc                    óˆ   g ‰ t ƒ t ƒ t ƒ }}}|||g‰‡ ‡fdd„}| j|d�}| ddd¡}| ddd¡}|  ||¡ |  ˆ dg¡ |  ˆ||g¡ d S )Nc                    r#  rá   r$  rö   r&  r
   r   r    r(  z;LookupBaseFallbackTests.test_lookup_cached.<locals>._lookupr  r	  r  r  r  r  r)  r
   r&  r   Útest_lookup_cached  ó   
z*LookupBaseFallbackTests.test_lookup_cachedc                    r"  )Nc                    r#  rá   r$  rö   r&  r
   r   r    r(  zNLookupBaseFallbackTests.test_lookup_not_cached_multi_required.<locals>._lookupr  ©r
  ÚDr  r  ©r2  r  r  r  r)  r
   r&  r   Ú%test_lookup_not_cached_multi_required  r.  z=LookupBaseFallbackTests.test_lookup_not_cached_multi_requiredc                    r/  )Nc                    r#  rá   r$  rö   r&  r
   r   r  +  r(  zJLookupBaseFallbackTests.test_lookup_cached_multi_required.<locals>._lookupr  r2  r  r  r4  r  r)  r
   r&  r   Ú!test_lookup_cached_multi_required&  r1  z9LookupBaseFallbackTests.test_lookup_cached_multi_requiredc                    ó’   g ‰ t ƒ t ƒ t ƒ }}}|||g‰‡ ‡fdd„}| j|d�}| ddd¡}| |¡ | ddd¡}|  ||¡ |  ˆ ddg¡ |  ˆ|g¡ d S )Nc                    r#  rá   r$  rö   r&  r
   r   r  ;  r(  zMLookupBaseFallbackTests.test_lookup_not_cached_after_changed.<locals>._lookupr  r	  r  r  r  )r]   r`   r  rM   ri   rp   r)  r
   r&  r   Ú$test_lookup_not_cached_after_changed6  ó   

ÿz<LookupBaseFallbackTests.test_lookup_not_cached_after_changedc                 C   r  )Nc                 S   rÞ   r  rß   rö   r
   r
   r   r  J  r#   zDLookupBaseFallbackTests.test_lookup1_w_invalid_name.<locals>._lookupr  r
  r  )r`   r©   rª   Úlookup1r]   r  r
   r
   r   Útest_lookup1_w_invalid_nameH  r  z3LookupBaseFallbackTests.test_lookup1_w_invalid_namec                    r  )Nc                    r  r   r  rö   r  r
   r   r  T  rN   zELookupBaseFallbackTests.test_lookup1_miss_no_default.<locals>._lookupr  r
  r  r  r  )r`   r:  rÐ   rp   r  r
   r  r   Útest_lookup1_miss_no_defaultQ  r  z4LookupBaseFallbackTests.test_lookup1_miss_no_defaultc                    r  )Nc                    r  r   r  rö   r  r
   r   r  `  rN   zDLookupBaseFallbackTests.test_lookup1_miss_w_default.<locals>._lookupr  r
  r  r  r  ©r]   r`   r:  ri   rp   r  r
   r  r   Útest_lookup1_miss_w_default\  r!  z3LookupBaseFallbackTests.test_lookup1_miss_w_defaultc                    sl   g ‰ t ƒ }‡ fdd„}| j|d�}| ddd|¡}|  ||¡ | ddd|¡}|  ||¡ |  ˆ dg¡ d S )Nc                    r  r   r  rö   r  r
   r   r  l  rN   zSLookupBaseFallbackTests.test_lookup1_miss_w_default_negative_cache.<locals>._lookupr  r
  r  r  r  r=  r  r
   r  r   Ú*test_lookup1_miss_w_default_negative_cacheh  s   zBLookupBaseFallbackTests.test_lookup1_miss_w_default_negative_cachec                    r"  )Nc                    r#  rá   r$  rö   r&  r
   r   r  {  r(  z@LookupBaseFallbackTests.test_lookup1_not_cached.<locals>._lookupr  r
  r  r  r  r=  r)  r
   r&  r   Útest_lookup1_not_cachedv  r.  z/LookupBaseFallbackTests.test_lookup1_not_cachedc                    r/  )Nc                    r#  rá   r$  rö   r&  r
   r   r  Š  r(  z<LookupBaseFallbackTests.test_lookup1_cached.<locals>._lookupr  r
  r  r  r  r=  r)  r
   r&  r   Útest_lookup1_cached…  r1  z+LookupBaseFallbackTests.test_lookup1_cachedc                    r7  )Nc                    r#  rá   r$  rö   r&  r
   r   r  š  r(  zNLookupBaseFallbackTests.test_lookup1_not_cached_after_changed.<locals>._lookupr  r
  r  r  r  )r]   r`   r:  rM   ri   rp   r)  r
   r&  r   Ú%test_lookup1_not_cached_after_changed•  r9  z=LookupBaseFallbackTests.test_lookup1_not_cached_after_changedc                 C   sV   t ƒ t ƒ }}|  ¡ }|  t¡� | ||t ƒ ¡ W d   ƒ d S 1 s$w   Y  d S r   )r]   r`   r©   rª   Úadapter_hook)r   ÚreqÚprvr  r
   r
   r   Ú test_adapter_hook_w_invalid_name§  s
   "ÿz8LookupBaseFallbackTests.test_adapter_hook_w_invalid_namec                 C   s2   t ƒ t ƒ }}|  ¡ }| ||d¡}|  |¡ d S r°   )r]   r`   rC  rÐ   )r   rD  rE  r  r  r
   r
   r   Ú!test_adapter_hook_miss_no_default­  s   z9LookupBaseFallbackTests.test_adapter_hook_miss_no_defaultc                 C   s>   t ƒ t ƒ t ƒ }}}|  ¡ }| ||d|¡}|  ||¡ d S r°   )r]   r`   rC  ri   )r   rD  rE  r  r  r  r
   r
   r   Ú test_adapter_hook_miss_w_default³  s   z8LookupBaseFallbackTests.test_adapter_hook_miss_w_defaultc                    sl   g ‰ ‡ fdd„‰‡fdd„}t ƒ t ƒ t ƒ }}}| j|d�}| ||d|¡}|  ||¡ |  ˆ |g¡ d S )Nc                    ó   ˆ   | ¡ d S r   r  ©Úcontext©Ú_f_called_withr
   r   Ú_factory¼  r#   zTLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None.<locals>._factoryc                    ó   ˆ S r   r
   rö   ©rN  r
   r   r  ¿  rH   zSLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_None.<locals>._lookupr  r  ©r]   r`   rC  ri   rp   ©r   r  rD  rE  r  r  Úadaptedr
   ©rM  rN  r   Ú*test_adapter_hook_hit_factory_returns_None¹  s   zBLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_Nonec                    st   g ‰t ƒ ‰ ‡ ‡fdd„‰‡fdd„}t ƒ t ƒ t ƒ }}}| j|d�}| ||d|¡}|  |ˆ ¡ |  ˆ|g¡ d S )Nc                    ó   ˆ  | ¡ ˆ S r   r  rJ  ©Ú_adapterrM  r
   r   rN  Ì  ó   
zWLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter.<locals>._factoryc                    rO  r   r
   rö   rP  r
   r   r  Ð  rH   zVLookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapter.<locals>._lookupr  r  rQ  rR  r
   ©rX  rM  rN  r   Ú-test_adapter_hook_hit_factory_returns_adapterÈ  ó   zELookupBaseFallbackTests.test_adapter_hook_hit_factory_returns_adapterc                    s`   g ‰ ‡ fdd„‰d‡fdd„	}t ƒ }tƒ }| j|d�}| ||¡}|  || ¡ |  ˆ | g¡ d S )Nc                    s   ˆ   | ¡ | S r   r  rJ  rL  r
   r   rN  Ü  rY  zILookupBaseFallbackTests.test_adapter_hook_super_unwraps.<locals>._factoryr„   c                    rO  r   r
   rö   rP  r
   r   r  à  rH   zHLookupBaseFallbackTests.test_adapter_hook_super_unwraps.<locals>._lookupr  )r„   )Úsuperr]   r`   rC  ri   rp   )r   r  r÷   rQ   r  rS  ©Ú	__class__rT  r   Útest_adapter_hook_super_unwrapsÙ  s   z7LookupBaseFallbackTests.test_adapter_hook_super_unwrapsc                    st   g ‰t ƒ ‰ ‡ ‡fdd„‰‡fdd„}t ƒ t ƒ t ƒ }}}| j|d�}| ||d|¡}|  |ˆ ¡ |  ˆ|g¡ d S )Nc                    rV  r   r  rJ  rW  r
   r   rN  î  rY  z;LookupBaseFallbackTests.test_queryAdapter.<locals>._factoryc                    rO  r   r
   rö   rP  r
   r   r  ò  rH   z:LookupBaseFallbackTests.test_queryAdapter.<locals>._lookupr  r  )r]   r`   ÚqueryAdapterri   rp   rR  r
   rZ  r   Útest_queryAdapterê  r\  z)LookupBaseFallbackTests.test_queryAdapterc                    ó\   g ‰ t ƒ t ƒ t ƒ g‰‡ ‡fdd„}| j|d�}| dd¡}|  |tˆƒ¡ |  ˆ dg¡ d S )Nc                    ó   ˆ   ||f¡ tˆƒS r   ©r;   rW   rü   r&  r
   r   Ú
_lookupAllÿ  ó   zCLookupBaseFallbackTests.test_lookupAll_uncached.<locals>._lookupAll©rý   r
  r  ©r	  r  ©r]   r`   Ú	lookupAllrp   rW   ©r   rf  r  r  r
   r&  r   Útest_lookupAll_uncachedû  ó   z/LookupBaseFallbackTests.test_lookupAll_uncachedc                    óh   g ‰ t ƒ t ƒ t ƒ g‰‡ ‡fdd„}| j|d�}| dd¡}| dd¡}|  |tˆƒ¡ |  ˆ dg¡ d S )Nc                    rd  r   re  rü   r&  r
   r   rf    rg  zALookupBaseFallbackTests.test_lookupAll_cached.<locals>._lookupAllrh  r
  r  ri  rj  rl  r
   r&  r   Útest_lookupAll_cached  ó   z-LookupBaseFallbackTests.test_lookupAll_cachedc                    rc  )Nc                    rd  r   re  rü   r&  r
   r   Ú_subscriptions  rg  zKLookupBaseFallbackTests.test_subscriptions_uncached.<locals>._subscriptions©rÿ   r
  r  ri  ©r]   r`   Úsubscriptionsrp   rW   ©r   rr  r  r  r
   r&  r   Útest_subscriptions_uncached  rn  z3LookupBaseFallbackTests.test_subscriptions_uncachedc                    ro  )Nc                    rd  r   re  rü   r&  r
   r   rr  '  rg  zILookupBaseFallbackTests.test_subscriptions_cached.<locals>._subscriptionsrs  r
  r  ri  rt  rv  r
   r&  r   Útest_subscriptions_cached#  rq  z1LookupBaseFallbackTests.test_subscriptions_cached©NNN)!r   r   r	   rõ   r^   r`   r  r  r   r-  r0  r5  r6  r8  r;  r<  r>  r?  r@  rA  rB  rF  rG  rH  rU  r[  r`  rb  rm  rp  rw  rx  Ú__classcell__r
   r
   r^  r   ró   ¶  s>    
ÿ		ró   c                   @   ó   e Zd Zdd„ ZdS )ÚLookupBaseTestsc                 C   r?   )Nr   )Ú
LookupBase)rC   r}  )r   r}  r
   r
   r   r^   5  rE   zLookupBaseTests._getTargetClassN©r   r   r	   r^   r
   r
   r
   r   r|  2  ó    r|  c                   @   s^   e Zd Zdd„ ZeZ		ddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚVerifyingBaseFallbackTestsc                 C   r?   )Nr   )ÚVerifyingBaseFallback)rC   r�  )r   r�  r
   r
   r   rõ   <  rE   z,VerifyingBaseFallbackTests._getFallbackClassNc                    sb   ˆ d u rdd„ ‰ ˆd u rdd„ ‰ˆd u rdd„ ‰G ‡ ‡‡fdd„d|   ¡ ƒ}||ƒ}| |¡ |S )	Nc                 S   rù   r   rú   rö   r
   r
   r   rø   G  rþ   z6VerifyingBaseFallbackTests._makeOne.<locals>.uc_lookupc                 S   rù   r   rú   rü   r
   r
   r   rý   L  rþ   z9VerifyingBaseFallbackTests._makeOne.<locals>.uc_lookupAllc                 S   rù   r   rú   rü   r
   r
   r   rÿ   Q  rþ   z=VerifyingBaseFallbackTests._makeOne.<locals>.uc_subscriptionsc                       s(   e Zd Z”Z”Z”Z‡ fdd„Z‡  ZS )z4VerifyingBaseFallbackTests._makeOne.<locals>.Derivedc                    s   t ƒ  ¡  || _d S r   )r]  r6   Ú	_registryrr   r^  r
   r   r6   Y  s   

z=VerifyingBaseFallbackTests._makeOne.<locals>.Derived.__init__)r   r   r	   r   r  r  r6   rz  r
   r  r^  r   r  T  s
    r  )r^   rM   )r   rl   rø   rý   rÿ   r  Zderivedr
   r  r   r`   B  s   	
z#VerifyingBaseFallbackTests._makeOnec                    s(   G dd„ dƒ‰ G ‡ fdd„dƒ}||ƒS )Nc                   @   s   e Zd ZdZdS )z@VerifyingBaseFallbackTests._makeRegistry.<locals>.WithGenerationro   N)r   r   r	   rq   r
   r
   r
   r   ÚWithGenerationc  s    rƒ  c                       s   e Zd Z‡ fdd„ZdS )z:VerifyingBaseFallbackTests._makeRegistry.<locals>.Registryc                    s   ‡ fdd„t |ƒD ƒ| _d S )Nc                    s   g | ]}ˆ ƒ ‘qS r
   r
   )rS   Úi©rƒ  r
   r   rV   h  s    zWVerifyingBaseFallbackTests._makeRegistry.<locals>.Registry.__init__.<locals>.<listcomp>)ÚrangeÚro)r   Údepthr…  r
   r   r6   g  s   zCVerifyingBaseFallbackTests._makeRegistry.<locals>.Registry.__init__Nr7   r
   r…  r
   r   ÚRegistryf  s    r‰  r
   )r   rˆ  r‰  r
   r…  r   Ú_makeRegistrya  s   z(VerifyingBaseFallbackTests._makeRegistryc                    óà   g ‰ t ƒ t ƒ t ƒ }}}|||g‰‡ ‡fdd„}|  d¡}| j||d�}| ddd¡}| ddd¡}|  ||¡ |  ˆ dg¡ |  ˆ||g¡ |jd	  jd	7  _| ddd¡}|  ||¡ |  ˆ ddg¡ |  ˆ|g¡ d S )
Nc                    r#  rá   r$  rö   r&  r
   r   r  q  r(  z7VerifyingBaseFallbackTests.test_lookup.<locals>._lookupr¾   r  r	  r  r  r  ro   )r]   rŠ  r`   r  ri   rp   r‡  rq   ©r   r*  r+  r,  r  rG   r  r  r
   r&  r   Útest_lookupl  ó$   

ÿz&VerifyingBaseFallbackTests.test_lookupc                    r‹  )
Nc                    r#  rá   r$  rö   r&  r
   r   r  ˆ  r(  z8VerifyingBaseFallbackTests.test_lookup1.<locals>._lookupr¾   r  r
  r  r  r  ro   )r]   rŠ  r`   r:  ri   rp   r‡  rq   rŒ  r
   r&  r   Útest_lookup1ƒ  rŽ  z'VerifyingBaseFallbackTests.test_lookup1c                    sê   t ƒ t ƒ t ƒ g\‰‰}‡fdd„}‡fdd„}‡fdd„}|||g‰ ‡ fdd„}t ƒ t ƒ t ƒ }}}ˆ d	¡}	ˆj|	|d
�}
|
 ||d|¡}ˆ |ˆ¡ |
 ||d|¡}ˆ |ˆ¡ |	jd  jd7  _|
 ||d|¡}ˆ |ˆ¡ d S )Nc                    rO  r   r
   rJ  ©r*  r
   r   Ú	_factory1�  rH   z?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory1c                    rO  r   r
   rJ  ©r+  r
   r   Ú	_factory2   rH   z?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory2c                    ó   ˆ   d¡ d S r  rß   rJ  r(   r
   r   Ú	_factory3£  r#   z?VerifyingBaseFallbackTests.test_adapter_hook.<locals>._factory3c                    ó
   ˆ   d¡S rá   ©r%  rö   ©Ú
_factoriesr
   r   r  ¨  r    z=VerifyingBaseFallbackTests.test_adapter_hook.<locals>._lookupr¾   r  r  ro   )r]   rŠ  r`   rC  ri   r‡  rq   ©r   Z_cr‘  r“  r•  r  rD  rE  r  rG   r  rS  r
   ©r™  r*  r+  r   r   Útest_adapter_hookš  ó    

z,VerifyingBaseFallbackTests.test_adapter_hookc                    sê   t ƒ t ƒ t ƒ g\‰‰}‡fdd„}‡fdd„}‡fdd„}|||g‰ ‡ fdd„}t ƒ t ƒ t ƒ }}}ˆ d	¡}	ˆj|	|d
�}
|
 ||d|¡}ˆ |ˆ¡ |
 ||d|¡}ˆ |ˆ¡ |	jd  jd7  _|
 ||d|¡}ˆ |ˆ¡ d S )Nc                    rO  r   r
   rJ  r�  r
   r   r‘  ¹  rH   z?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory1c                    rO  r   r
   rJ  r’  r
   r   r“  ¼  rH   z?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory2c                    r”  r  rß   rJ  r(   r
   r   r•  ¿  r#   z?VerifyingBaseFallbackTests.test_queryAdapter.<locals>._factory3c                    r–  rá   r—  rö   r˜  r
   r   r  Ä  r    z=VerifyingBaseFallbackTests.test_queryAdapter.<locals>._lookupr¾   r  r  ro   )r]   rŠ  r`   ra  ri   r‡  rq   rC  rš  r
   r›  r   rb  ¶  r�  z,VerifyingBaseFallbackTests.test_queryAdapterc                    ó¸   t ƒ t ƒ t ƒ g}t ƒ t ƒ t ƒ g}||g‰ ‡ fdd„}|  d¡}| j||d�}| dd¡}|  |t|ƒ¡ | dd¡}|  |t|ƒ¡ |jd  jd7  _| dd¡}|  |t|ƒ¡ d S )Nc                    ó   t ˆ  d¡ƒS rá   ©rW   r%  rü   ©r'  r
   r   rf  ×  r#   z=VerifyingBaseFallbackTests.test_lookupAll.<locals>._lookupAllr¾   rh  r
  r  ro   )r]   rŠ  r`   rk  rp   rW   r‡  rq   )r   Ú
_results_1Ú
_results_2rf  rG   r  r  r
   r¡  r   Útest_lookupAllÒ  ó   
z)VerifyingBaseFallbackTests.test_lookupAllc                    rž  )Nc                    rŸ  rá   r   rü   r¡  r
   r   rr  é  r#   zEVerifyingBaseFallbackTests.test_subscriptions.<locals>._subscriptionsr¾   rs  r
  r  ro   )r]   rŠ  r`   ru  rp   rW   r‡  rq   )r   r¢  r£  rr  rG   r  r  r
   r¡  r   Útest_subscriptionsä  r¥  z-VerifyingBaseFallbackTests.test_subscriptionsry  )r   r   r	   rõ   r^   r`   rŠ  r�  r�  rœ  rb  r¤  r¦  r
   r
   r
   r   r€  :  s    
ÿr€  c                   @   r{  )ÚVerifyingBaseTestsc                 C   r?   )Nr   )ÚVerifyingBase)rC   r¨  )r   r¨  r
   r
   r   r^   ú  rE   z"VerifyingBaseTests._getTargetClassNr~  r
   r
   r
   r   r§  ÷  r  r§  c                       s<  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Z‡ fd-d.„Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'‡  Z(S )KÚAdapterLookupBaseTestsc                 C   r?   )Nr   )ÚAdapterLookupBase)rC   rª  )r   rª  r
   r
   r   r^     rE   z&AdapterLookupBaseTests._getTargetClassc                 C   s   |   ¡ |ƒS r   r_   rr   r
   r
   r   r`     r%   zAdapterLookupBaseTests._makeOnec                 G   s   G dd„ dƒ}|ƒ S )Nc                   @   r{  )z<AdapterLookupBaseTests._makeSubregistry.<locals>.Subregistryc                 S   s   g | _ g | _d S r   )r{   r‚   r(   r
   r
   r   r6     ó   
zEAdapterLookupBaseTests._makeSubregistry.<locals>.Subregistry.__init__Nr7   r
   r
   r
   r   ÚSubregistry
  ó    r¬  r
   )r   rQ   r¬  r
   r
   r   Ú_makeSubregistry  s   z'AdapterLookupBaseTests._makeSubregistryc                 G   s   G dd„ dƒ}||ƒS )Nc                   @   r{  )z6AdapterLookupBaseTests._makeRegistry.<locals>.Registryc                 S   s   || _ g | _d S r   )rˆ   r‡  rP   r
   r
   r   r6     r«  z?AdapterLookupBaseTests._makeRegistry.<locals>.Registry.__init__Nr7   r
   r
   r
   r   r‰    r­  r‰  r
   )r   rQ   r‰  r
   r
   r   rŠ    s   z$AdapterLookupBaseTests._makeRegistryc                 C   s$   |   ¡ }|  |¡}|  |ji ¡ d S r   )rŠ  r`   rp   rO   )r   rl   Úalbr
   r
   r   Útest_ctor_empty_registry  s   
z/AdapterLookupBaseTests.test_ctor_empty_registryc                 C   s®   ddl m} ddlm} |dƒ}|d|fƒ}|  ||¡}|  |¡}|  t|j 	¡ ƒt|||gƒ¡ |  |j| ||g¡ |  |j| |g¡ |  t|j| ƒt||gƒ¡ d S ©Nr   r   ©ÚInterfaceClassÚIFooÚIBar)
r   r   Úzope.interface.interfacer³  rŠ  r`   rp   rž   rO   Úkeys©r   r   r³  r´  rµ  rl   r¯  r
   r
   r   Útest_ctor_w_registry_provided  s   
ÿ
ÿz4AdapterLookupBaseTests.test_ctor_w_registry_providedc                 C   sB   G dd„ dƒ}G dd„ d|   ¡ |ƒ}|  ¡ }||ƒ}| |¡ d S )Nc                   @   r{  )zAAdapterLookupBaseTests.test_changed_empty_required.<locals>.Mixinc                 W   rF   r   r
   r,   r
   r
   r   rM   1  rH   zIAdapterLookupBaseTests.test_changed_empty_required.<locals>.Mixin.changedN©r   r   r	   rM   r
   r
   r
   r   ÚMixin0  r­  r»  c                   @   r   )zCAdapterLookupBaseTests.test_changed_empty_required.<locals>.DerivedNr   r
   r
   r
   r   r  4  r   r  )r^   rŠ  rM   )r   r»  r  rl   r¯  r
   r
   r   Útest_changed_empty_required-  s
   z2AdapterLookupBaseTests.test_changed_empty_requiredc                 C   s¢   G dd„ dƒ}G dd„ d|   ¡ |ƒ}G dd„ dƒ}|dƒ}|dƒ}|  ¡ }||ƒ}d	|j|< d	|j|< | |¡ |  t|jƒd
¡ |  |jd ¡ |  |j|¡ d S )Nc                   @   r{  )z=AdapterLookupBaseTests.test_changed_w_required.<locals>.Mixinc                 W   rF   r   r
   r,   r
   r
   r   rM   ?  rH   zEAdapterLookupBaseTests.test_changed_w_required.<locals>.Mixin.changedNrº  r
   r
   r
   r   r»  >  r­  r»  c                   @   r   )z?AdapterLookupBaseTests.test_changed_w_required.<locals>.DerivedNr   r
   r
   r
   r   r  B  r   r  c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )zCAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakrefNc                 S   ó
   || _ d S r   ©Z_here)r   Úherer
   r
   r   r6   H  r    zLAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.__init__c                 S   s   | j r| S d S r   r¾  r(   r
   r
   r   Ú__call__K  r#   zLAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.__call__c                 S   r½  r   )Ú_unsub)r   Útargetr
   r
   r   rÂ   N  r    zOAdapterLookupBaseTests.test_changed_w_required.<locals>.FauxWeakref.unsubscribe)r   r   r	   rÁ  r6   rÀ  rÂ   r
   r
   r
   r   ÚFauxWeakrefE  s
    rÃ  FTro   r   )r^   rŠ  Ú	_requiredrM   rp   r'   rÁ  )r   r»  r  rÃ  Úgoner¿  rl   r¯  r
   r
   r   Útest_changed_w_required;  s   


z.AdapterLookupBaseTests.test_changed_w_requiredc                 C   s¼   ddl m} ddlm} |dƒ}|d|fƒ}|  ¡ }|  |¡}||g|_| ¡  |  t	|j
 ¡ ƒt	|||gƒ¡ |  |j
| ||g¡ |  |j
| |g¡ |  t	|j
| ƒt	||gƒ¡ d S r±  )r   r   r¶  r³  rŠ  r`   rˆ   Zinit_extendorsrp   rž   rO   r·  r¸  r
   r
   r   Ú)test_init_extendors_after_registry_update\  s    

ÿ
ÿz@AdapterLookupBaseTests.test_init_extendors_after_registry_updatec                 C   s¾   ddl m} ddlm} |dƒ}|d|fƒ}|  ¡ }|  |¡}| |¡ | |¡ |  t|j	 
¡ ƒt|||gƒ¡ |  |j	| ||g¡ |  |j	| |g¡ |  t|j	| ƒt||gƒ¡ d S r±  )r   r   r¶  r³  rŠ  r`   rR   rp   rž   rO   r·  r¸  r
   r
   r   Útest_add_extendorl  s    


ÿ
ÿz(AdapterLookupBaseTests.test_add_extendorc                 C   s´   ddl m} ddlm} |dƒ}|d|fƒ}|  ||¡}|  |¡}| |¡ |  t|j	 
¡ ƒt|||gƒ¡ |  |j	| |g¡ |  |j	| |g¡ |  t|j	| ƒt|gƒ¡ d S r±  )r   r   r¶  r³  rŠ  r`   rX   rp   rž   rO   r·  r¸  r
   r
   r   Útest_remove_extendor|  s   

ÿÿz+AdapterLookupBaseTests.test_remove_extendorc                 C   st   ddl m} |dƒ}|d|fƒ}|  ¡ }|  |¡}| |f|¡}|  |d ¡ |  t|jƒd¡ |  | 	¡ |j¡ d S ©Nr   r²  r´  rµ  ro   )
r¶  r³  rŠ  r`   r   rp   r'   rÄ  rÀ   Úweakref©r   r³  r´  rµ  rl   r¯  Úresultr
   r
   r   Útest__uncached_lookup_empty_ro�  ó   
z5AdapterLookupBaseTests.test__uncached_lookup_empty_roc                 C   sh   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }|j |¡ |  |¡}| |f|¡}|  |d ¡ d S ©Nr   r²  r´  rµ  )	r¶  r³  rŠ  r®  r‡  r;   r`   r   rp   ©r   r³  r´  rµ  rl   Úsubrr¯  rÍ  r
   r
   r   Ú test__uncached_lookup_order_miss˜  s   
z7AdapterLookupBaseTests.test__uncached_lookup_order_missc                 C   st   ddl m} |dƒ}|d|fƒ}|  ¡ }|  ¡ }i i g|_|j |¡ |  |¡}||_| 	|f|¡}|  
|d ¡ d S rÐ  )r¶  r³  rŠ  r®  r{   r‡  r;   r`   rk   r   rp   rÑ  r
   r
   r   Ú$test__uncached_lookup_extendors_miss£  ó   

z;AdapterLookupBaseTests.test__uncached_lookup_extendors_missc           
      C   s’   ddl m} |dƒ}|d|fƒ}|dƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}	|  |	d ¡ d S ©Nr   r²  r´  rµ  ÚIQuxr„   ©r¶  r³  rŠ  r®  r]   r{   r‡  r;   r`   rk   r   rp   ©
r   r³  r´  rµ  r×  rl   rÒ  Ú
irrelevantr¯  rÍ  r
   r
   r   Ú1test__uncached_lookup_components_miss_wrong_iface°  s$   ÿÿþ
zHAdapterLookupBaseTests.test__uncached_lookup_components_miss_wrong_ifacec           	      C   sŠ   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}|  |d ¡ d S ©Nr   r²  r´  rµ  Ú	wrongnamerØ  ©	r   r³  r´  rµ  rl   rÒ  rÝ  r¯  rÍ  r
   r
   r   Ú0test__uncached_lookup_components_miss_wrong_nameÆ  s"   ÿÿþ
zGAdapterLookupBaseTests.test__uncached_lookup_components_miss_wrong_namec           	      C   sŠ   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}|  ||¡ d S ©Nr   r²  r´  rµ  r„   ©r¶  r³  rŠ  r®  r]   r{   r‡  r;   r`   rk   r   ri   )	r   r³  r´  rµ  rl   rÒ  Ú	_expectedr¯  rÍ  r
   r
   r   Ú test__uncached_lookup_simple_hitÜ  ó   þ
z7AdapterLookupBaseTests.test__uncached_lookup_simple_hitc           
      C   s¤   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}| 
|f|¡}	|  ||¡ |  |	|¡ d S rà  rá  )
r   r³  r´  rµ  rl   rÒ  râ  r¯  rÍ  Zresult2r
   r
   r   Ú"test__uncached_lookup_repeated_hití  s    þ
z9AdapterLookupBaseTests.test__uncached_lookup_repeated_hitc                 C   s®   ddl m} ddlm} |dƒ}|d|fƒ}||ƒG dd„ dƒƒ}|ƒ }|  ¡ }|  ¡ }i i g|_|j |¡ |  	|¡}	|	j
|	_|	|_tƒ }
|	j|f||
d�}|  ||
¡ d S )	Nr   ©Úimplementerr²  r´  rµ  c                   @   r   )zFAdapterLookupBaseTests.test_queryMultiAdaptor_lookup_miss.<locals>.FooNr   r
   r
   r
   r   ÚFoo  ó    rè  ©Údefault)Úzope.interface.declarationsrç  r¶  r³  rŠ  r®  r{   r‡  r;   r`   r   r  rk   r]   ÚqueryMultiAdapterri   )r   rç  r³  r´  rµ  rè  Úfoorl   rÒ  r¯  r  rÍ  r
   r
   r   Ú"test_queryMultiAdaptor_lookup_miss   s&   þ
z9AdapterLookupBaseTests.test_queryMultiAdaptor_lookup_missc                    s\   ddl m} ddlm} |dƒ‰ |  ¡ }|  |¡‰ˆjˆ_‡ ‡fdd„}|j| |dd� d S )	Nr   r²  )ÚMissingSomeAttrsr´  c                    s   ˆ  | fˆ ¡S r   )rí  )Úob©r´  r¯  r
   r   Útest'  s   þzVAdapterLookupBaseTests.test_queryMultiAdapter_errors_on_attribute_access.<locals>.testr_  )Zexpected_missing)	r¶  r³  Úzope.interface.testsrð  rŠ  r`   r   r  Ztest_raises)r   r³  rð  rl   ró  r
   rò  r   Ú1test_queryMultiAdapter_errors_on_attribute_access  s   
zHAdapterLookupBaseTests.test_queryMultiAdapter_errors_on_attribute_accessc                    sÜ   ddl m} ddlm} |dƒ}|d|fƒ}||ƒG dd„ dƒƒ}|ƒ }|  ||¡}|  ¡ }g ‰ ‡ fdd	„}	i ||d
|	iiig|_|j |¡ |  	|¡}
|
j
|
_|
|_tƒ }|
j|f||d�}|  ||¡ |  ˆ |g¡ d S )Nr   ræ  r²  r´  rµ  c                   @   r   )zGAdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss.<locals>.FooNr   r
   r
   r
   r   rè  5  ré  rè  c                    rI  r   r  rJ  r  r
   r   rN  >  r#   zLAdapterLookupBaseTests.test_queryMultiAdaptor_factory_miss.<locals>._factoryr„   rê  )rì  rç  r¶  r³  rŠ  r®  r{   r‡  r;   r`   r   r  rk   r]   rí  ri   rp   ©r   rç  r³  r´  rµ  rè  rî  rl   rÒ  rN  r¯  r  rÍ  r
   r  r   Ú#test_queryMultiAdaptor_factory_miss/  s,   þ
z:AdapterLookupBaseTests.test_queryMultiAdaptor_factory_missc                    sä   ddl m} ddlm} |dƒ}|d|fƒ}||ƒG dd„ dƒƒ}|ƒ }|  ||¡}|  ¡ }tƒ ‰g ‰ ‡ ‡fdd	„}	i ||d
|	iiig|_|j 	|¡ |  
|¡}
|
j|
_|
|_tƒ }|
j|f||d�}|  |ˆ¡ |  ˆ |g¡ d S )Nr   ræ  r²  r´  rµ  c                   @   r   )zFAdapterLookupBaseTests.test_queryMultiAdaptor_factory_hit.<locals>.FooNr   r
   r
   r
   r   rè  T  ré  rè  c                    s   ˆ   | ¡ ˆS r   r  rJ  ©r  râ  r
   r   rN  ^  rY  zKAdapterLookupBaseTests.test_queryMultiAdaptor_factory_hit.<locals>._factoryr„   rê  )rì  rç  r¶  r³  rŠ  r®  r]   r{   r‡  r;   r`   r   r  rk   rí  ri   rp   rö  r
   rø  r   Ú"test_queryMultiAdaptor_factory_hitN  s.   þ
z9AdapterLookupBaseTests.test_queryMultiAdaptor_factory_hitc                    s\   |   |  ¡ ¡}‡ fdd„}dd„ ‰ ||_tƒ ddtƒ g}| |d ¡}|  || dd| f¡ d S )Nc                     rO  r   r
   ©r¦   ©Úfactoryr
   r   r  r  rH   zKAdapterLookupBaseTests.test_queryMultiAdapter_super_unwraps.<locals>.lookupc                  W   s   | S r   r
   rú  r
   r
   r   rü  u  rH   zLAdapterLookupBaseTests.test_queryMultiAdapter_super_unwraps.<locals>.factoryé*   Úabc)r`   rŠ  r  r]  rí  rp   )r   r¯  r  ZobjectsrÍ  r^  rû  r   Ú$test_queryMultiAdapter_super_unwrapso  s    ü
üz;AdapterLookupBaseTests.test_queryMultiAdapter_super_unwrapsc                 C   st   ddl m} |dƒ}|d|fƒ}|  ¡ }|  |¡}| |f|¡}|  |d¡ |  t|jƒd¡ |  | 	¡ |j¡ d S )Nr   r²  r´  rµ  r
   ro   )
r¶  r³  rŠ  r`   r  rp   r'   rÄ  rÀ   rË  rÌ  r
   r
   r   Ú!test__uncached_lookupAll_empty_ro‰  rÏ  z8AdapterLookupBaseTests.test__uncached_lookupAll_empty_roc                 C   sn   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }|j |¡ |  |¡}||_| |f|¡}|  	|d¡ d S ©Nr   r²  r´  rµ  r
   )
r¶  r³  rŠ  r®  r‡  r;   r`   rk   r  rp   rÑ  r
   r
   r   Ú#test__uncached_lookupAll_order_miss”  ó   
z:AdapterLookupBaseTests.test__uncached_lookupAll_order_missc                 C   st   ddl m} |dƒ}|d|fƒ}|  ¡ }|  ¡ }i i g|_|j |¡ |  |¡}||_| 	|f|¡}|  
|d¡ d S r  )r¶  r³  rŠ  r®  r{   r‡  r;   r`   rk   r  rp   rÑ  r
   r
   r   Ú'test__uncached_lookupAll_extendors_miss   rÕ  z>AdapterLookupBaseTests.test__uncached_lookupAll_extendors_missc           
      C   s’   ddl m} |dƒ}|d|fƒ}|dƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}	|  |	d¡ d S )Nr   r²  r´  rµ  r×  r„   r
   )r¶  r³  rŠ  r®  r]   r{   r‡  r;   r`   rk   r  rp   rÙ  r
   r
   r   Ú(test__uncached_lookupAll_components_miss­  ó   þ
z?AdapterLookupBaseTests.test__uncached_lookupAll_components_missc           
      C   s¢   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }tƒ }tƒ }i ||||dœiig|_|j |¡ |  |¡}||_	| 
|f|¡}	|  t|	ƒd|fd|fg¡ d S ©Nr   r²  r´  rµ  )r„   Únamedr„   r  )r¶  r³  rŠ  r®  r]   r{   r‡  r;   r`   rk   r  rp   rž   ©
r   r³  r´  rµ  rl   rÒ  râ  Z_namedr¯  rÍ  r
   r
   r   Ú#test__uncached_lookupAll_simple_hit¿  s   þ
 z:AdapterLookupBaseTests.test__uncached_lookupAll_simple_hitc           
      C   s¢   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }tƒ }tƒ }i ||||dœiig|_|j |¡ |  |¡}|j	|_
||_| |f|¡}	|  t|	ƒddg¡ d S r  )r¶  r³  rŠ  r®  r]   r{   r‡  r;   r`   r  rk  rk   Únamesrp   rž   r	  r
   r
   r   Ú
test_namesÑ  s    þ
z!AdapterLookupBaseTests.test_namesc                 C   st   ddl m} |dƒ}|d|fƒ}|  ¡ }|  |¡}| |f|¡}|  |g ¡ |  t|jƒd¡ |  | 	¡ |j¡ d S rÊ  )
r¶  r³  rŠ  r`   r  rp   r'   rÄ  rÀ   rË  rÌ  r
   r
   r   Ú%test__uncached_subscriptions_empty_roä  rÏ  z<AdapterLookupBaseTests.test__uncached_subscriptions_empty_roc                 C   sn   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }|j |¡ |  |¡}||_| |f|¡}|  	|g ¡ d S rÐ  )
r¶  r³  rŠ  r®  r‡  r;   r`   rk   r  rp   rÑ  r
   r
   r   Ú'test__uncached_subscriptions_order_missï  r  z>AdapterLookupBaseTests.test__uncached_subscriptions_order_missc                 C   st   ddl m} |dƒ}|d|fƒ}|  ¡ }|  ¡ }i i g|_|j |¡ |  |¡}||_| 	|f|¡}|  
|g ¡ d S rÐ  )r¶  r³  rŠ  r®  r‚   r‡  r;   r`   rk   r  rp   rÑ  r
   r
   r   Ú+test__uncached_subscriptions_extendors_missû  rÕ  zBAdapterLookupBaseTests.test__uncached_subscriptions_extendors_missc           
      C   s’   ddl m} |dƒ}|d|fƒ}|dƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}	|  |	g ¡ d S rÖ  ©r¶  r³  rŠ  r®  r]   r‚   r‡  r;   r`   rk   r  rp   rÙ  r
   r
   r   Ú8test__uncached_subscriptions_components_miss_wrong_iface  r  zOAdapterLookupBaseTests.test__uncached_subscriptions_components_miss_wrong_ifacec           	      C   sŠ   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }tƒ }i ||d|iiig|_|j |¡ |  |¡}||_	| 
|f|¡}|  |g ¡ d S rÜ  r  rÞ  r
   r
   r   Ú7test__uncached_subscriptions_components_miss_wrong_name  rä  zNAdapterLookupBaseTests.test__uncached_subscriptions_components_miss_wrong_namec                 C   s°   ddl m} |dƒ}|d|fƒ}|  ||¡}|  ¡ }G dd„ dƒ}|ƒ |ƒ }}i ||d||fiiig|_|j |¡ |  |¡}	|	|_|	 	|f|¡}
|  
t|
ƒt||gƒ¡ d S )Nr   r²  r´  rµ  c                   @   r{  )zKAdapterLookupBaseTests.test__uncached_subscriptions_simple_hit.<locals>.Fooc                 S   s   dS )NTr
   r,   r
   r
   r   Ú__lt__4  rH   zRAdapterLookupBaseTests.test__uncached_subscriptions_simple_hit.<locals>.Foo.__lt__N)r   r   r	   r  r
   r
   r
   r   rè  2  s    rè  r„   )r¶  r³  rŠ  r®  r‚   r‡  r;   r`   rk   r  rp   rž   )r   r³  r´  rµ  rl   rÒ  rè  Ú_exp1Ú_exp2r¯  rÍ  r
   r
   r   Ú'test__uncached_subscriptions_simple_hit+  s   þ
z>AdapterLookupBaseTests.test__uncached_subscriptions_simple_hitc                    sö   ddl m} ddlm} |dƒ}|d|fƒ}||ƒG dd„ dƒƒ}|ƒ }|  ||¡}|  ||¡}|  ¡ }i ‰ ‡ fdd	„}	‡ fd
d„}
i |d d|	|
fiiig|_|j |¡ |  	|¡}|j
|_||_| |fd ¡}|  |d¡ |  ˆ |g|gdœ¡ d S )Nr   ræ  r²  r´  rµ  c                   @   r   )z@AdapterLookupBaseTests.test_subscribers_wo_provided.<locals>.FooNr   r
   r
   r
   r   rè  H  ré  rè  c                    ó   ˆ   dg ¡ | ¡ d S ©Nr‘  ©Ú
setdefaultr;   rJ  ©Ú_calledr
   r   r‘  R  ó   zFAdapterLookupBaseTests.test_subscribers_wo_provided.<locals>._factory1c                    r  ©Nr“  r  rJ  r  r
   r   r“  U  r  zFAdapterLookupBaseTests.test_subscribers_wo_provided.<locals>._factory2r„   r
   )r‘  r“  )rì  rç  r¶  r³  rŠ  r®  r‚   r‡  r;   r`   r  ru  rk   Úsubscribersrp   )r   rç  r³  r´  rµ  rè  rî  rl   rÒ  r‘  r“  r¯  rÍ  r
   r  r   Útest_subscribers_wo_providedB  s.   þ
z3AdapterLookupBaseTests.test_subscribers_wo_providedc                    s  ddl m} ddlm} |dƒ}|d|fƒ}||ƒG dd„ dƒƒ}|ƒ }|  ||¡}|  ||¡}|  ¡ }i ‰ tƒ tƒ ‰‰‡ ‡fdd	„}	‡ ‡fd
d„}
‡ fdd„}i ||d|	|
|fiiig|_|j 	|¡ |  
|¡}|j|_||_| |f|¡}|  |ˆˆg¡ |  ˆ |g|g|gdœ¡ d S )Nr   ræ  r²  r´  rµ  c                   @   r   )z?AdapterLookupBaseTests.test_subscribers_w_provided.<locals>.FooNr   r
   r
   r
   r   rè  j  ré  rè  c                    ó   ˆ   dg ¡ | ¡ ˆS r  r  rJ  )r  r  r
   r   r‘  u  ó   zEAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._factory1c                    r!  r  r  rJ  )r  r  r
   r   r“  y  r"  zEAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._factory2c                    r  )NÚ_side_effect_onlyr  rJ  r  r
   r   r#  }  r  zMAdapterLookupBaseTests.test_subscribers_w_provided.<locals>._side_effect_onlyr„   )r‘  r“  r#  )rì  rç  r¶  r³  rŠ  r®  r]   r‚   r‡  r;   r`   r  ru  rk   r  rp   )r   rç  r³  r´  rµ  rè  rî  rl   rÒ  r‘  r“  r#  r¯  rÍ  r
   )r  r  r  r   Útest_subscribers_w_providedd  s>   þ
ýÿz2AdapterLookupBaseTests.test_subscribers_w_provided))r   r   r	   r^   r`   r®  rŠ  r°  r¹  r¼  rÆ  rÇ  rÈ  rÉ  rÎ  rÓ  rÔ  rÛ  rß  rã  rå  rï  rõ  r÷  rù  rÿ  r   r  r  r  r
  r  r  r  r  r  r  r  r   r$  rz  r
   r
   r^  r   r©  ÿ  sL    		!!"r©  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚVerifyingAdapterRegistryTestsc                 C   r?   )Nr   )ÚVerifyingAdapterRegistry)rC   r&  )r   r&  r
   r
   r   r^   š  rE   z-VerifyingAdapterRegistryTests._getTargetClassc                 O   s   |   ¡ |i |¤ŽS r   r_   )r   r¦   Úkwr
   r
   r   r`   ž  s   z&VerifyingAdapterRegistryTests._makeOnec                 C   s.   ddl m} ddlm} |  ¡ }|||ƒ d S )Nr   )ÚIAdapterRegistry)ÚverifyObject)Zzope.interface.interfacesr(  Zzope.interface.verifyr)  r`   )r   r(  r)  rl   r
   r
   r   Ú,test_verify_object_provides_IAdapterRegistry¡  s   zJVerifyingAdapterRegistryTests.test_verify_object_provides_IAdapterRegistryN)r   r   r	   r^   r`   r*  r
   r
   r
   r   r%  “  s    r%  c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚAdapterRegistryTestsc                 C   r?   )Nr   )ÚAdapterRegistry)rC   r,  )r   r,  r
   r
   r   r^   ª  rE   z$AdapterRegistryTests._getTargetClassc                 C   s   |   ¡ }|  t|jƒd¡ d S rá   )r`   rp   r'   Ú_v_subregistries)r   Úarr
   r
   r   Útest_ctor_no_bases®  s   z'AdapterRegistryTests.test_ctor_no_basesc                 C   sJ   |   ¡ }|   |g¡}|  t|jƒd¡ |  t|jƒd¡ |  ||j¡ d S rz   )r`   rp   r'   r-  rÀ   )r   ÚbaseÚsubr
   r
   r   Útest_ctor_w_bases²  s
   z&AdapterRegistryTests.test_ctor_w_basesc                 C   sZ   |   ¡ }|   ¡ }|   |g¡}|g|_|  t|jƒd¡ |  t|jƒd¡ |  ||j¡ d S rz   ©r`   rx   rp   r'   r-  rÀ   ©r   ÚbeforeÚafterr1  r
   r
   r   Ú,test__setBases_removing_existing_subregistry»  s   zAAdapterRegistryTests.test__setBases_removing_existing_subregistryc                 C   sr   |   ¡ }|   ¡ }|   ¡ }|   |g¡}|jd  |¡ |g|_|  t|jƒd¡ |  t|jƒd¡ |  ||j¡ d S )Nrx   r   ro   )r`   Ú__dict__r;   rx   rp   r'   r-  rÀ   )r   r5  Zstrayr6  r1  r
   r
   r   Útest__setBases_wo_stray_entryÄ  s   z2AdapterRegistryTests.test__setBases_wo_stray_entryc                 C   sj   |   ¡ }|   ¡ }|   |g¡}||g|_|  t|jƒd¡ |  t|jƒd¡ |  ||j¡ |  ||j¡ d S rn   r3  r4  r
   r
   r   Ú*test__setBases_w_existing_entry_continuingÏ  s   
z?AdapterRegistryTests.test__setBases_w_existing_entry_continuingc                 C   sh   |   ¡ }G dd„ dƒ}|ƒ |ƒ }}| |¡ | |¡ tƒ }| |¡ |  |j|¡ |  |j|¡ d S )Nc                   @   s   e Zd ZdZdd„ ZdS )zBAdapterRegistryTests.test_changed_w_subregistries.<locals>.DerivedNc                 S   r½  r   rJ   )r   Zoriginally_changedr
   r
   r   rM   ß  r    zJAdapterRegistryTests.test_changed_w_subregistries.<locals>.Derived.changed)r   r   r	   rK   rM   r
   r
   r
   r   r  Ü  s    r  )r`   Z_addSubregistryr]   rM   ri   rK   )r   r0  r  Zderived1Zderived2rL   r
   r
   r   Útest_changed_w_subregistriesÙ  s   


z1AdapterRegistryTests.test_changed_w_subregistriesN)
r   r   r	   r^   r/  r2  r7  r9  r:  r;  r
   r
   r
   r   r+  ¨  s    		
r+  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
Test_utilsc                 C   s,   ddl m} ddlm} |  |d ƒ|¡ d S )Nr   ©Ú_convert_None_to_Interfacer   )rC   r>  r¶  r   ri   )r   r>  r   r
   r
   r   Ú&test__convert_None_to_Interface_w_Noneí  s   z1Test_utils.test__convert_None_to_Interface_w_Nonec                 C   s&   ddl m} tƒ }|  ||ƒ|¡ d S )Nr   r=  )rC   r>  r]   ri   )r   r>  r-   r
   r
   r   Ú'test__convert_None_to_Interface_w_otherò  s   z2Test_utils.test__convert_None_to_Interface_w_otherc                 C   s<   ddl m} d}d}||ƒ}|  ||¡ |  |t|ƒ¡ d S )Nr   ©Ú_normalize_names   strÚstr)rC   rB  rp   r|   r+   )r   rB  ZSTRÚUNICODEZnormr
   r
   r   Útest__normalize_name_str÷  s   z#Test_utils.test__normalize_name_strc                 C   s$   ddl m} d}|  ||ƒ|¡ d S )Nr   rA  Zustr)rC   rB  rp   )r   rB  ZUSTRr
   r
   r   Útest__normalize_name_unicodeÿ  s   z'Test_utils.test__normalize_name_unicodec                 C   s6   ddl m} dddg i tƒ fD ]	}|  t||¡ qd S )Nr   rA  ro   g      ð?r
   )rC   rB  r]   r©   Ú	TypeError)r   rB  r-   r
   r
   r   Útest__normalize_name_other	  s   ÿz%Test_utils.test__normalize_name_otherN)r   r   r	   r?  r@  rE  rF  rH  r
   r
   r
   r   r<  ë  s    r<  )rò   Zunittestrô  r   r   r   r2   r9   r<   r=   ZTestCaser>   rì   ró   r|  r€  r§  r©  r%  r+  r<  r
   r
   r
   r   Ú<module>   sJ   $	      3  ~ÿ >ÿ     C