o
    $x`§e  ã                   @   sÒ  d Z ddlmZ zddlmZ W n ey   dd„ ZY nw ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dgZG dd„ deƒZdd„ ZG dd„ deƒZ ee
ƒG dd„ deƒƒZ!dd „ Z"d!d"„ Z#d#d$„ Z$d%d&„ Z%eeƒG d'd(„ d(eƒƒZ&ee	ƒG d)d*„ d*eƒƒZ'eeƒG d+d,„ d,e'ƒƒZ(eeƒG d-d.„ d.e'ƒƒZ)d/S )0zBasic components support
é    )Údefaultdict)Únotifyc                  O   ó   d S ©N© )ÚargÚkwr   r   ú9/usr/lib/python3/dist-packages/zope/interface/registry.pyr      ó    r   )ÚISpecification)ÚComponentLookupError)ÚIAdapterRegistration)ÚIComponents)ÚIHandlerRegistration)Ú ISubscriptionAdapterRegistration)ÚIUtilityRegistration)Ú
Registered)ÚUnregistered)Ú	Interface)ÚimplementedBy)Úimplementer)Úimplementer_only)Ú
providedBy)ÚAdapterRegistry)ÚCLASS_TYPES)ÚSTRING_TYPESÚ
Componentsc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_UnhashableComponentCounterc                 C   s   dd„ |  ¡ D ƒ| _d S )Nc                 S   s   g | ]}|‘qS r   r   )Ú.0Úitemr   r   r	   Ú
<listcomp>6   s    z8_UnhashableComponentCounter.__init__.<locals>.<listcomp>)ÚitemsÚ_data)ÚselfÚ	otherdictr   r   r	   Ú__init__4   s   z$_UnhashableComponentCounter.__init__c                 C   s$   | j D ]\}}||kr|  S qdS ©Nr   )r"   )r#   ÚkeyÚ	componentÚcountr   r   r	   Ú__getitem__8   s
   ÿz'_UnhashableComponentCounter.__getitem__c                 C   sH   t | jƒD ]\}}|d |kr||f| j|<  d S q| j ||f¡ d S r&   )Ú	enumerater"   Úappend)r#   r(   r)   ÚiÚdatar   r   r	   Ú__setitem__>   s   þz'_UnhashableComponentCounter.__setitem__c                 C   s6   t | jƒD ]\}}|d |kr| j|=  d S qt|ƒ‚r&   )r+   r"   ÚKeyError)r#   r(   r-   r.   r   r   r	   Ú__delitem__E   s   þz'_UnhashableComponentCounter.__delitem__N)Ú__name__Ú
__module__Ú__qualname__r%   r*   r/   r1   r   r   r   r	   r   1   s
    r   c                   C   s   t tƒS r   )r   Úintr   r   r   r	   Ú_defaultdict_intL   ó   r6   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 )Ú_UtilityRegistrationsc                 C   s"   t tƒ| _|| _|| _|  ¡  d S r   )r   r6   Ú_cacheÚ
_utilitiesÚ_utility_registrationsÚ%_UtilityRegistrations__populate_cache)r#   Ú	utilitiesÚutility_registrationsr   r   r	   r%   Q   s   
z_UtilityRegistrations.__init__c                 C   s4   t | j ¡ ƒD ]\\}}}|d }|  ||¡ qd S r&   )Úiterr;   r!   Ú$_UtilityRegistrations__cache_utility)r#   ÚpÚ_r.   r(   r   r   r	   Ú__populate_cacheY   s   þz&_UtilityRegistrations.__populate_cachec                 C   sZ   z| j | |  d7  < W d S  ty,   t| j | ƒ }| j |< ||  d7  < Y d S w )Né   )r9   Ú	TypeErrorr   )r#   Úprovidedr(   Úprovr   r   r	   Ú__cache_utility^   s   üz%_UtilityRegistrations.__cache_utilityc                 C   s@   | j | }|| }|d8 }|dkr||= |dkS |||< |dkS )NrD   r   )r9   )r#   rF   r(   r)   r   r   r	   Ú__uncache_utilityg   s   
ÿz'_UtilityRegistrations.__uncache_utilityc                 C   s*   z
| j | | dkW S  ty   Y dS w )Nr   F)r9   rE   )r#   rF   r(   r   r   r	   Ú_is_utility_subscribedv   s
   þz,_UtilityRegistrations._is_utility_subscribedc                 C   sV   |   ||¡}|||f| j||f< | j d|||¡ |s#| j d||¡ |  ||¡ d S ©Nr   )rJ   r;   r:   ÚregisterÚ	subscriber@   )r#   rF   Únamer(   ÚinfoÚfactoryÚ
subscribedr   r   r	   ÚregisterUtility}   s   z%_UtilityRegistrations.registerUtilityc                 C   sD   | j ||f= | j d||¡ |  ||¡}|s | j d||¡ d S d S rK   )r;   r:   Ú
unregisterÚ&_UtilityRegistrations__uncache_utilityÚunsubscribe)r#   rF   rN   r(   rQ   r   r   r	   ÚunregisterUtilityˆ   s   ÿz'_UtilityRegistrations.unregisterUtilityN)
r2   r3   r4   r%   r<   r@   rT   rJ   rR   rV   r   r   r   r	   r8   O   s    	r8   c                       sr  e Zd ZdZdIdd„Zdd„ Z‡ fdd	„Zd
d„ Zdd„ Ze	dd„ ƒZ
dd„ Zdd„ Ze	dd„ dd„ ƒZ		dJdd„Z		dKdd„Zdd„ ZdLdd„ZdMd d!„Zd"d#„ Zd$d%„ Z		dNd&d'„Z		dOd(d)„Zd*d+„ ZdLd,d-„ZdMd.d/„Z		dLd0d1„ZdMd2d3„Zd4d5„ Z			dNd6d7„Zd8d9„ Z		dOd:d;„Zd<d=„ Z 			dPd>d?„Z!d@dA„ Z"dQdBdC„Z#dDdE„ Z$dRdGdH„Z%‡  Z&S )Sr   NÚ r   c                 C   s8   t |tƒsJ ‚|| _|  ¡  |  ¡  t|ƒ| _d | _d S r   )Ú
isinstancer   r2   Ú_init_registriesÚ_init_registrationsÚtupleÚ	__bases__Ú_v_utility_registrations_cache)r#   rN   Úbasesr   r   r	   r%   —   s   

zComponents.__init__c                 C   s   d| j j| jf S )Nz<%s %s>)Ú	__class__r2   ©r#   r   r   r	   Ú__repr__¡   ó   zComponents.__repr__c                    s<   t t| ƒ ¡ }dd„ |d  ¡ D ƒ}t|ƒ}||d< t|ƒS )Nc                 S   s    i | ]\}}|  d ¡s||“qS )Ú_v_)Ú
startswith)r   ÚkÚvr   r   r	   Ú
<dictcomp>­   s    ÿz)Components.__reduce__.<locals>.<dictcomp>é   )Úsuperr   Ú
__reduce__r!   Úlistr[   )r#   Ú	reductionÚfiltered_state©r_   r   r	   rj   ¤   s
   zComponents.__reduce__c                 C   s   t ƒ | _t ƒ | _d S r   )r   Úadaptersr=   r`   r   r   r	   rY   ³   s   zComponents._init_registriesc                 C   s   i | _ i | _g | _g | _d S r   )r;   Ú_adapter_registrationsÚ_subscription_registrationsÚ_handler_registrationsr`   r   r   r	   rZ   ¹   s   
zComponents._init_registrationsc                 C   s>   | j }|d u s|j| jus|j| jurt| j| jƒ }| _ |S r   )r]   r:   r=   r;   r8   )r#   Úcacher   r   r	   Ú_utility_registrations_cache¿   s   
þz'Components._utility_registrations_cachec                 C   s   | j  dd¡S )Nr\   r   )Ú__dict__Úgetr`   r   r   r	   Ú	_getBasesÌ   s   zComponents._getBasesc                 C   s>   t dd„ |D ƒƒ| j_t dd„ |D ƒƒ| j_t |ƒ| jd< d S )Nc                 S   ó   g | ]}|j ‘qS r   )ro   ©r   Úbaser   r   r	   r    Ò   ó    ÿz(Components._setBases.<locals>.<listcomp>c                 S   rx   r   )r=   ry   r   r   r	   r    Ô   r{   r\   )r[   ro   r\   r=   ru   ©r#   r^   r   r   r	   Ú	_setBasesÐ   s   ÿÿzComponents._setBasesc                 C   s   |   ¡ S r   )rw   r`   r   r   r	   Ú<lambda>Ù   s    zComponents.<lambda>c                 C   s
   |   |¡S r   )r}   r|   r   r   r	   r~   Ú   s   
 Tc              	   C   s²   |r|rt dƒ‚|ƒ }|d u rt|ƒ}|dkrt|ƒ}| j ||f¡}|d ur<|d d… ||fkr3d S |  |d ||¡ | j |||||¡ |rWtt	t
| |||||ƒƒƒ d S d S )Nú$Can't specify factory and component.rW   rh   r   )rE   Ú_getUtilityProvidedÚ_getNamer;   rv   rV   rt   rR   r   r   ÚUtilityRegistration)r#   r(   rF   rN   rO   ÚeventrP   Úregr   r   r	   rR   Ý   s.   
ÿÿ
ÿÿzComponents.registerUtilityc                 C   s°   |r|rt dƒ‚|ƒ }|d u r|d u rt dƒ‚t|ƒ}| j ||f¡}|d u s1|d ur3||d kr3dS |d u r;|d }| j |||¡ ttt| |||g|dd … ¢R Ž ƒƒ dS )Nr   z3Must specify one of component, factory and providedr   FrD   T)	rE   r€   r;   rv   rt   rV   r   r   r‚   )r#   r(   rF   rN   rP   Úoldr   r   r	   rV   ú   s*   ÿÿzComponents.unregisterUtilityc                 c   s8   � t | j ¡ ƒD ]\\}}}t| ||g|¢R Ž V  qd S r   )r?   r;   r!   r‚   )r#   rF   rN   r.   r   r   r	   ÚregisteredUtilities  s
   €ÿþzComponents.registeredUtilitiesc                 C   s   | j  d|||¡S rK   )r=   Úlookup)r#   rF   rN   Údefaultr   r   r	   ÚqueryUtility  rb   zComponents.queryUtilityc                 C   s&   | j  d||¡}|d u rt||ƒ‚|S rK   )r=   r‡   r   )r#   rF   rN   Úutilityr   r   r	   Ú
getUtility!  s   
zComponents.getUtilityc                 c   s(   � | j  d|¡D ]	\}}||fV  qd S rK   )r=   Ú	lookupAll)r#   Ú	interfacerN   rŠ   r   r   r	   ÚgetUtilitiesFor'  s   €ÿzComponents.getUtilitiesForc                 C   s   | j  d|¡S rK   )r=   Úsubscriptions)r#   r�   r   r   r	   ÚgetAllUtilitiesRegisteredFor+  ó   z'Components.getAllUtilitiesRegisteredForc              	   C   sv   |d u rt |ƒ}t||ƒ}|dkrt|ƒ}||f| j|||f< | j ||||¡ |r9ttt| |||||ƒƒƒ d S d S ©NrW   )	Ú_getAdapterProvidedÚ_getAdapterRequiredr�   rp   ro   rL   r   r   ÚAdapterRegistration©r#   rP   ÚrequiredrF   rN   rO   rƒ   r   r   r	   ÚregisterAdapter.  s   
ÿ
ÿ
ÿÿzComponents.registerAdapterc                 C   s´   |d u r|d u rt dƒ‚t|ƒ}|d u r|d u rt dƒ‚t||ƒ}| j |||f¡}|d u s8|d ur:||d kr:dS | j|||f= | j |||¡ ttt	| |||g|¢R Ž ƒƒ dS )Nú(Must specify one of factory and providedú(Must specify one of factory and requiredr   FT)
rE   r“   r”   rp   rv   ro   rS   r   r   r•   )r#   rP   r—   rF   rN   r…   r   r   r	   ÚunregisterAdapter@  s&   
ÿÿzComponents.unregisterAdapterc                 c   s<   � t | j ¡ ƒD ]\\}}}\}}t| |||||ƒV  qd S r   )r?   rp   r!   r•   )r#   r—   rF   rN   r(   rO   r   r   r	   ÚregisteredAdapters[  s   €ÿ
ÿþzComponents.registeredAdaptersc                 C   ó   | j  ||||¡S r   )ro   ÚqueryAdapter)r#   Úobjectr�   rN   rˆ   r   r   r	   rž   a  rb   zComponents.queryAdapterc                 C   ó(   | j  |||¡}|d u rt|||ƒ‚|S r   )ro   rž   r   )r#   rŸ   r�   rN   Úadapterr   r   r	   Ú
getAdapterd  ó   zComponents.getAdapterc                 C   r�   r   )ro   ÚqueryMultiAdapter)r#   Úobjectsr�   rN   rˆ   r   r   r	   r¤   j  s   ÿzComponents.queryMultiAdapterc                 C   r    r   )ro   r¤   r   )r#   r¥   r�   rN   r¡   r   r   r	   ÚgetMultiAdaptero  r£   zComponents.getMultiAdapterc                 c   sB   � | j  ttt|ƒƒ|¡D ]\}}||Ž }|d ur||fV  qd S r   )ro   rŒ   rk   Úmapr   )r#   r¥   rF   rN   rP   r¡   r   r   r	   ÚgetAdaptersu  s   €þ
€ûzComponents.getAdaptersc              	   C   sr   |rt dƒ‚|d u rt|ƒ}t||ƒ}| j |||||f¡ | j |||¡ |r7ttt	| |||||ƒƒƒ d S d S )Nú'Named subscribers are not yet supported)
rE   r“   r”   rq   r,   ro   rM   r   r   ÚSubscriptionRegistrationr–   r   r   r	   ÚregisterSubscriptionAdapter}  s    
ÿ
ÿ
ÿÿz&Components.registerSubscriptionAdapterc                 c   ó$   � | j D ]}t| g|¢R Ž V  qd S r   )rq   rª   ©r#   r.   r   r   r	   ÚregisteredSubscriptionAdapters‘  ó   €
ÿz)Components.registeredSubscriptionAdaptersc              	      sØ   |rt dƒ‚ˆd u rˆ d u rt dƒ‚tˆ ƒ‰ˆd u r"ˆ d u r"t dƒ‚tˆ ˆƒ‰ˆ d u r7‡‡fdd„| jD ƒ}n‡ ‡‡fdd„| jD ƒ}t|ƒt| jƒkrNdS || jd d …< | j ˆˆˆ ¡ ttt	| ˆˆ|ˆ dƒƒƒ d	S )
Nr©   r™   rš   c                    s4   g | ]\}}}}}|ˆkr|ˆ ks|||||f‘qS r   r   ©r   ÚrrA   ÚnÚfr-   )rF   r—   r   r	   r    ¥  s
    ýz<Components.unregisterSubscriptionAdapter.<locals>.<listcomp>c                    s<   g | ]\}}}}}|ˆkr|ˆkr|ˆ ks|||||f‘qS r   r   r°   ©rP   rF   r—   r   r	   r    «  s
    ýFrW   T)
rE   r“   r”   rq   Úlenro   rU   r   r   rª   )r#   rP   r—   rF   rN   Únewr   r´   r	   ÚunregisterSubscriptionAdapter•  s4   
þþ
ÿÿz(Components.unregisterSubscriptionAdapterc                 C   s   | j  ||¡S r   ©ro   Úsubscribers)r#   r¥   rF   r   r   r	   r¹   ¿  r‘   zComponents.subscribersc                 C   s^   |rt dƒ‚t||ƒ}| j ||||f¡ | j |d |¡ |r-ttt| ||||ƒƒƒ d S d S )Nz$Named handlers are not yet supported)	rE   r”   rr   r,   ro   rM   r   r   ÚHandlerRegistration)r#   rP   r—   rN   rO   rƒ   r   r   r	   ÚregisterHandlerÂ  s   

ÿ
ÿÿzComponents.registerHandlerc                 c   r¬   r   )rr   rº   r­   r   r   r	   ÚregisteredHandlersÓ  r¯   zComponents.registeredHandlersc                    s²   |rt dƒ‚ˆd u rˆ d u rt dƒ‚tˆ ˆƒ‰ˆ d u r&‡fdd„| jD ƒ}n‡ ‡fdd„| jD ƒ}t|ƒt| jƒkr<dS || jd d …< | j ˆd ˆ ¡ ttt| ˆ|ˆ dƒƒƒ dS )	Nr©   rš   c                    s(   g | ]\}}}}|ˆ kr||||f‘qS r   r   ©r   r±   r²   r³   r-   )r—   r   r	   r    á  s
    

ýz0Components.unregisterHandler.<locals>.<listcomp>c                    s0   g | ]\}}}}|ˆkr|ˆ ks||||f‘qS r   r   r½   ©rP   r—   r   r	   r    ç  s
    

ýFrW   T)	rE   r”   rr   rµ   ro   rU   r   r   rº   )r#   rP   r—   rN   r¶   r   r¾   r	   ÚunregisterHandler×  s(   

þþÿzComponents.unregisterHandlerc                 G   s   | j  |d ¡ d S r   r¸   )r#   r¥   r   r   r	   Úhandleù  rb   zComponents.handleFc              	   C   s"  t | jƒ}| j}d}d}d}d}d|jvsJ ‚dd„ |_|r%|j}|j}	ndd„  }}	zN| ¡ D ]:\\}
}\}}}| d|
|¡|krN|d|
||ƒ |d7 }n|d7 }| 	d|
|¡du rf|d7 }|	d|
|ƒ q0|d7 }q0W |`|ry|st|ry| |¡ n|`|rˆ|s‚|r‰| |¡ w w w ||||d	œS )
aá  
        Emergency maintenance method to rebuild the ``.utilities``
        registry from the local copy maintained in this object, or
        detect the need to do so.

        Most users will never need to call this, but it can be helpful
        in the event of suspected corruption.

        By default, this method only checks for corruption. To make it
        actually rebuild the registry, pass `True` for *rebuild*.

        :param bool rebuild: If set to `True` (not the default),
           this method will actually register and subscribe utilities
           in the registry as needed to synchronize with the local cache.

        :return: A dictionary that's meant as diagnostic data. The keys
           and values may change over time. When called with a false *rebuild*,
           the keys ``"needed_registered"`` and ``"needed_subscribed"`` will be
           non-zero if any corruption was detected, but that will not be corrected.

        .. versionadded:: 5.3.0
        r   Úchangedc                 S   r   r   r   )rB   r   r   r	   r~     r
   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>c                  W   r   r   r   )Úargsr   r   r	   r~   $  r
   r   rD   N)Úneeded_registeredÚdid_not_registerÚneeded_subscribedÚdid_not_subscribe)
Údictr;   r=   ru   rÁ   rL   rM   r!   Ú
registeredrQ   )r#   ÚrebuildÚregsÚutilsrÃ   rÄ   rÅ   rÆ   rL   rM   rF   rN   ÚvalueÚ_infoÚ_factoryr   r   r	   Ú$rebuildUtilityRegistryFromLocalCacheü  sH   



õ
€þÿüz/Components.rebuildUtilityRegistryFromLocalCache)rW   r   )NNrW   rW   TN)NNrW   N)rW   N)rW   )NNrW   rW   T)NNNrW   )NrW   rW   T)NNrW   )F)'r2   r3   r4   r]   r%   ra   rj   rY   rZ   Úpropertyrt   rw   r}   r\   rR   rV   r†   r‰   r‹   rŽ   r�   r˜   r›   rœ   rž   r¢   r¤   r¦   r¨   r«   r®   r·   r¹   r»   r¼   r¿   rÀ   rÏ   Ú__classcell__r   r   rn   r	   r   ’   sr    


þ
ÿ
ÿ


ÿ
ÿ


ÿ
	
ý
ÿ*
ý
"c                 C   s   z| j W S  ty   Y dS w r’   )Ú__component_name__ÚAttributeError)r(   r   r   r	   r�   ?  s
   ÿr�   c                 C   ó(   t t| ƒƒ}t|ƒdkr|d S tdƒ‚)NrD   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)rk   r   rµ   rE   )r(   rF   r   r   r	   r€   E  ó   ÿr€   c                 C   rÔ   )NrD   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)rk   r   rµ   rE   )rP   rF   r   r   r	   r“   M  rÕ   r“   c                 C   s˜   |d u rz| j }W n ty   tdƒ‚w t |¡rtdƒ‚g }|D ]%}|d u r+t}nt |¡sBt|tƒr:t|ƒ}ntdt	|ƒ ƒ‚| 
|¡ q"t|ƒS )NzoThe adapter factory doesn't have a __component_adapts__ attribute and no required specifications were specifiedzLthe required argument should be a list of interfaces, not a single interfacez?Required specification must be a specification or class, not %r)Ú__component_adapts__rÓ   rE   r   r   r   rX   r   r   Útyper,   r[   )rP   r—   Úresultr±   r   r   r	   r”   U  s,   
ÿÿ



ÿr”   c                   @   sV   e Zd 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S )r‚   Nc                 C   ó,   ||||||f\| _ | _| _| _| _| _d S r   )ÚregistryrF   rN   r(   rO   rP   )r#   rÚ   rF   rN   r(   ÚdocrP   r   r   r	   r%   t  s   þzUtilityRegistration.__init__c              
   C   s<   d| j j| jt| jdd ƒ| jt| jdt| jƒƒ| j| j	f S )Nz%s(%r, %s, %r, %s, %r, %r)r2   )
r_   r2   rÚ   ÚgetattrrF   rN   r(   ÚreprrP   rO   r`   r   r   r	   ra   y  s   ûzUtilityRegistration.__repr__c                 C   ó   t | ƒS r   ©Úidr`   r   r   r	   Ú__hash__‚  r7   zUtilityRegistration.__hash__c                 C   ó   t | ƒt |ƒkS r   ©rÝ   ©r#   Úotherr   r   r	   Ú__eq__…  ó   zUtilityRegistration.__eq__c                 C   ó   t | ƒt |ƒkS r   rã   rä   r   r   r	   Ú__ne__ˆ  rç   zUtilityRegistration.__ne__c                 C   ó   t | ƒt |ƒk S r   rã   rä   r   r   r	   Ú__lt__‹  rç   zUtilityRegistration.__lt__c                 C   ó   t | ƒt |ƒkS r   rã   rä   r   r   r	   Ú__le__Ž  rç   zUtilityRegistration.__le__c                 C   ó   t | ƒt |ƒkS r   rã   rä   r   r   r	   Ú__gt__‘  rç   zUtilityRegistration.__gt__c                 C   ó   t | ƒt |ƒkS r   rã   rä   r   r   r	   Ú__ge__”  rç   zUtilityRegistration.__ge__r   ©r2   r3   r4   r%   ra   rá   ræ   ré   rë   rí   rï   rñ   r   r   r   r	   r‚   q  s    
	r‚   c                   @   sT   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S )r•   c                 C   rÙ   r   )rÚ   r—   rF   rN   rP   rO   )r#   rÚ   r—   rF   rN   r(   rÛ   r   r   r	   r%   š  s   þzAdapterRegistration.__init__c                 C   sT   d| j j| jdd dd„ | jD ƒ¡ d t| jdd ƒ| jt| jdt	| jƒƒ| j
f S )Nz%s(%r, %s, %s, %r, %s, %r)ú[ú, c                 S   rx   r   ©r2   ©r   r±   r   r   r	   r    £  ó    z0AdapterRegistration.__repr__.<locals>.<listcomp>ú]r2   )r_   r2   rÚ   Újoinr—   rÜ   rF   rN   rP   rÝ   rO   r`   r   r   r	   ra   Ÿ  s   ûzAdapterRegistration.__repr__c                 C   rÞ   r   rß   r`   r   r   r	   rá   ¨  r7   zAdapterRegistration.__hash__c                 C   râ   r   rã   rä   r   r   r	   ræ   «  rç   zAdapterRegistration.__eq__c                 C   rè   r   rã   rä   r   r   r	   ré   ®  rç   zAdapterRegistration.__ne__c                 C   rê   r   rã   rä   r   r   r	   rë   ±  rç   zAdapterRegistration.__lt__c                 C   rì   r   rã   rä   r   r   r	   rí   ´  rç   zAdapterRegistration.__le__c                 C   rî   r   rã   rä   r   r   r	   rï   ·  rç   zAdapterRegistration.__gt__c                 C   rð   r   rã   rä   r   r   r	   rñ   º  rç   zAdapterRegistration.__ge__Nrò   r   r   r   r	   r•   —  s    	r•   c                   @   s   e Zd ZdS )rª   N)r2   r3   r4   r   r   r   r	   rª   ½  s    rª   c                   @   s,   e Zd Zdd„ Zedd„ ƒZdZdd„ ZdS )rº   c                 C   s&   |||||f\| _ | _| _| _| _d S r   )rÚ   r—   rN   ÚhandlerrO   )r#   rÚ   r—   rN   rú   rÛ   r   r   r	   r%   Å  s   ÿzHandlerRegistration.__init__c                 C   s   | j S r   )rú   r`   r   r   r	   rP   É  s   zHandlerRegistration.factoryNc              
   C   sH   d| j j| jdd dd„ | jD ƒ¡ d | jt| jdt| jƒƒ| j	f S )Nz%s(%r, %s, %r, %s, %r)ró   rô   c                 S   rx   r   rõ   rö   r   r   r	   r    Ó  r÷   z0HandlerRegistration.__repr__.<locals>.<listcomp>rø   r2   )
r_   r2   rÚ   rù   r—   rN   rÜ   rP   rÝ   rO   r`   r   r   r	   ra   Ï  s   ûzHandlerRegistration.__repr__)r2   r3   r4   r%   rÐ   rP   rF   ra   r   r   r   r	   rº   Â  s    
rº   N)*Ú__doc__Úcollectionsr   Ú
zope.eventr   ÚImportErrorÚzope.interface.interfacesr   r   r   r   r   r   r   r   r   Úzope.interface.interfacer   Úzope.interface.declarationsr   r   r   r   Úzope.interface.adapterr   Úzope.interface._compatr   r   Ú__all__rŸ   r   r6   r8   r   r�   r€   r“   r”   r‚   r•   rª   rº   r   r   r   r	   Ú<module>   s\   ÿüC   /%%