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)ÚselfZ	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.   r0   r   r   r   r	   r   1   s
    r   c                   C   s   t tƒS r   )r   Úintr   r   r   r	   Ú_defaultdict_intL   ó   r5   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   r5   Ú_cacheÚ
_utilitiesÚ_utility_registrationsÚ%_UtilityRegistrations__populate_cache)r#   Ú	utilitiesZ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	   Z__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é   )r8   Ú	TypeErrorr   )r#   Úprovidedr'   Zprovr   r   r	   Z__cache_utility^   s   üz%_UtilityRegistrations.__cache_utilityc                 C   s@   | j | }|| }|d8 }|dkr||= |dkS |||< |dkS )NrA   r   )r8   )r#   rC   r'   r(   r   r   r	   Z__uncache_utilityg   s   
ÿz'_UtilityRegistrations.__uncache_utilityc                 C   s*   z
| j | | dkW S  ty   Y dS w )Nr   F)r8   rB   )r#   rC   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   )rD   r:   r9   ÚregisterÚ	subscriber>   )r#   rC   Únamer'   ÚinfoÚfactoryÚ
subscribedr   r   r	   ÚregisterUtility}   s   z%_UtilityRegistrations.registerUtilityc                 C   sD   | j ||f= | j d||¡ |  ||¡}|s | j d||¡ d S d S rE   )r:   r9   Ú
unregisterÚ&_UtilityRegistrations__uncache_utilityÚunsubscribe)r#   rC   rH   r'   rK   r   r   r	   ÚunregisterUtilityˆ   s   ÿz'_UtilityRegistrations.unregisterUtilityN)
r1   r2   r3   r$   r;   r>   rN   rD   rL   rP   r   r   r   r	   r7   O   s    	r7   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   r1   Ú_init_registriesÚ_init_registrationsÚtupleÚ	__bases__Ú_v_utility_registrations_cache)r#   rH   Úbasesr   r   r	   r$   —   s   

zComponents.__init__c                 C   s   d| j j| jf S )Nz<%s %s>)Ú	__class__r1   ©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 )Z_v_)Ú
startswith)r   ÚkÚvr   r   r	   Ú
<dictcomp>­   s    ÿz)Components.__reduce__.<locals>.<dictcomp>é   )Úsuperr   Ú
__reduce__r!   ÚlistrU   )r#   Z	reductionZfiltered_state©rY   r   r	   rc   ¤   s
   zComponents.__reduce__c                 C   s   t ƒ | _t ƒ | _d S r   )r   Úadaptersr<   rZ   r   r   r	   rS   ³   s   zComponents._init_registriesc                 C   s   i | _ i | _g | _g | _d S r   )r:   Ú_adapter_registrationsÚ_subscription_registrationsÚ_handler_registrationsrZ   r   r   r	   rT   ¹   s   
zComponents._init_registrationsc                 C   s>   | j }|d u s|j| jus|j| jurt| j| jƒ }| _ |S r   )rW   r9   r<   r:   r7   )r#   Úcacher   r   r	   Ú_utility_registrations_cache¿   s   
ÿ
þ
þz'Components._utility_registrations_cachec                 C   s   | j  dd¡S )NrV   r   )Ú__dict__ÚgetrZ   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   )rf   ©r   Úbaser   r   r	   r    Ò   ó    ÿz(Components._setBases.<locals>.<listcomp>c                 S   ro   r   )r<   rp   r   r   r	   r    Ô   rr   rV   )rU   rf   rV   r<   rl   ©r#   rX   r   r   r	   Ú	_setBasesÐ   s   ÿÿzComponents._setBasesc                 C   s   |   ¡ S r   )rn   rZ   r   r   r	   Ú<lambda>Ù   s    zComponents.<lambda>c                 C   s
   |   |¡S r   )rt   rs   r   r   r	   ru   Ú   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.rQ   ra   r   )rB   Ú_getUtilityProvidedÚ_getNamer:   rm   rP   rk   rL   r   r   ÚUtilityRegistration)r#   r'   rC   rH   rI   ÚeventrJ   Zregr   r   r	   rL   Ý   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 )Nrv   z3Must specify one of component, factory and providedr   FrA   T)	rB   rw   r:   rm   rk   rP   r   r   ry   )r#   r'   rC   rH   rJ   Úoldr   r   r	   rP   ú   s,   
ÿÿÿzComponents.unregisterUtilityc                 c   s8    t | j ¡ ƒD ]\\}}}t| ||g|¢R Ž V  qd S r   )r=   r:   r!   ry   )r#   rC   rH   r-   r   r   r	   ÚregisteredUtilities  s
   €ÿþzComponents.registeredUtilitiesc                 C   s   | j  d|||¡S rE   )r<   Úlookup)r#   rC   rH   Údefaultr   r   r	   ÚqueryUtility  r\   zComponents.queryUtilityc                 C   s&   | j  d||¡}|d u rt||ƒ‚|S rE   )r<   r}   r   )r#   rC   rH   Úutilityr   r   r	   Ú
getUtility!  s   
zComponents.getUtilityc                 c   s(    | j  d|¡D ]	\}}||fV  qd S rE   )r<   Ú	lookupAll)r#   Ú	interfacerH   r€   r   r   r	   ÚgetUtilitiesFor'  s   €ÿzComponents.getUtilitiesForc                 C   s   | j  d|¡S rE   )r<   Z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 ©NrQ   )	Ú_getAdapterProvidedÚ_getAdapterRequiredrx   rg   rf   rF   r   r   ÚAdapterRegistration©r#   rJ   ÚrequiredrC   rH   rI   rz   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)
rB   rˆ   r‰   rg   rm   rf   rM   r   r   rŠ   )r#   rJ   rŒ   rC   rH   r{   r   r   r	   ÚunregisterAdapter@  s(   

ÿÿÿzComponents.unregisterAdapterc                 c   s<    t | j ¡ ƒD ]\\}}}\}}t| |||||ƒV  qd S r   )r=   rg   r!   rŠ   )r#   rŒ   rC   rH   r'   rI   r   r   r	   ÚregisteredAdapters[  s   €ÿ
ÿþzComponents.registeredAdaptersc                 C   ó   | j  ||||¡S r   )rf   ÚqueryAdapter)r#   Úobjectrƒ   rH   r~   r   r   r	   r“   a  r\   zComponents.queryAdapterc                 C   ó(   | j  |||¡}|d u rt|||ƒ‚|S r   )rf   r“   r   )r#   r”   rƒ   rH   Úadapterr   r   r	   Ú
getAdapterd  ó   zComponents.getAdapterc                 C   r’   r   )rf   ÚqueryMultiAdapter)r#   Úobjectsrƒ   rH   r~   r   r   r	   r™   j  s   ÿzComponents.queryMultiAdapterc                 C   r•   r   )rf   r™   r   )r#   rš   rƒ   rH   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   )rf   r‚   rd   Úmapr   )r#   rš   rC   rH   rJ   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)
rB   rˆ   r‰   rh   r+   rf   rG   r   r   ÚSubscriptionRegistrationr‹   r   r   r	   ÚregisterSubscriptionAdapter}  s    
ÿ
ÿ
ÿÿz&Components.registerSubscriptionAdapterc                 c   ó$    | j D ]}t| g|¢R Ž V  qd S r   )rh   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   Úrr?   ÚnÚfr,   )rC   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¥   ©rJ   rC   rŒ   r   r	   r    «  s    ýýýFrQ   T)
rB   rˆ   r‰   rh   Úlenrf   rO   r   r   rŸ   )r#   rJ   rŒ   rC   rH   Únewr   r©   r	   ÚunregisterSubscriptionAdapter•  s4   
þþ
ÿÿz(Components.unregisterSubscriptionAdapterc                 C   s   | j  ||¡S r   ©rf   Úsubscribers)r#   rš   rC   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)	rB   r‰   ri   r+   rf   rG   r   r   ÚHandlerRegistration)r#   rJ   rŒ   rH   rI   rz   r   r   r	   ÚregisterHandlerÂ  s   

ÿ
ÿÿzComponents.registerHandlerc                 c   r¡   r   )ri   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²   ©rJ   rŒ   r   r	   r    ç  s    
ýýFrQ   T)	rB   r‰   ri   rª   rf   rO   r   r   r¯   )r#   rJ   rŒ   rH   r«   r   r³   r	   ÚunregisterHandler×  s(   

þþÿzComponents.unregisterHandlerc                 G   s   | j  |d ¡ d S r   r­   )r#   rš   r   r   r	   Úhandleù  r\   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   )r@   r   r   r	   ru     r
   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>c                  W   r   r   r   )Úargsr   r   r	   ru   $  r
   r   rA   N)Úneeded_registeredÚdid_not_registerÚneeded_subscribedÚdid_not_subscribe)
Údictr:   r<   rl   r¶   rF   rG   r!   Z
registeredrK   )r#   ZrebuildÚregsZutilsr¸   r¹   rº   r»   rF   rG   rC   rH   ÚvalueÚ_infoZ_factoryr   r   r	   Ú$rebuildUtilityRegistryFromLocalCacheü  sH   



õ
€þÿüz/Components.rebuildUtilityRegistryFromLocalCache)rQ   r   )NNrQ   rQ   TN)NNrQ   N)rQ   N)rQ   )NNrQ   rQ   T)NNNrQ   )NrQ   rQ   T)NNrQ   )F)'r1   r2   r3   rW   r$   r[   rc   rS   rT   Úpropertyrk   rn   rt   rV   rL   rP   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   re   r	   r   ’   sr    


þ
ÿ
ÿ


ÿ
ÿ


ÿ
	
ý
ÿ*
ý
"c                 C   s   z| j W S  ty   Y dS w r‡   )Z__component_name__ÚAttributeError)r'   r   r   r	   rx   ?  s
   ÿrx   c                 C   ó(   t t| ƒƒ}t|ƒdkr|d S tdƒ‚)NrA   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)rd   r   rª   rB   )r'   rC   r   r   r	   rw   E  ó   ÿrw   c                 C   rÄ   )NrA   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)rd   r   rª   rB   )rJ   rC   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)Z__component_adapts__rÃ   rB   r   r   r   rR   r   r   Útyper+   rU   )rJ   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 )ry   Nc                 C   ó,   ||||||f\| _ | _| _| _| _| _d S r   )ÚregistryrC   rH   r'   rI   rJ   )r#   rÉ   rC   rH   r'   ÚdocrJ   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)r1   )
rY   r1   rÉ   ÚgetattrrC   rH   r'   ÚreprrJ   rI   rZ   r   r   r	   r[   y  s   ûzUtilityRegistration.__repr__c                 C   ó   t | ƒS r   ©ÚidrZ   r   r   r	   Ú__hash__‚  r6   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   ©r1   r2   r3   r$   r[   rÐ   rÕ   rØ   rÚ   rÜ   rÞ   rà   r   r   r   r	   ry   q  s    
	ry   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Œ   rC   rH   rJ   rI   )r#   rÉ   rŒ   rC   rH   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   ro   r   ©r1   ©r   r¦   r   r   r	   r    £  ó    z0AdapterRegistration.__repr__.<locals>.<listcomp>ú]r1   )rY   r1   rÉ   ÚjoinrŒ   rË   rC   rH   rJ   rÌ   rI   rZ   r   r   r	   r[   Ÿ  s   ûzAdapterRegistration.__repr__c                 C   rÍ   r   rÎ   rZ   r   r   r	   rÐ   ¨  r6   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)r1   r2   r3   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Œ   rH   ÚhandlerrI   )r#   rÉ   rŒ   rH   ré   rÊ   r   r   r	   r$   Å  s   ÿzHandlerRegistration.__init__c                 C   s   | j S r   )ré   rZ   r   r   r	   rJ   É  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   ro   r   rä   rå   r   r   r	   r    Ó  ræ   z0HandlerRegistration.__repr__.<locals>.<listcomp>rç   r1   )
rY   r1   rÉ   rè   rŒ   rH   rË   rJ   rÌ   rI   rZ   r   r   r	   r[   Ï  s   ûzHandlerRegistration.__repr__)r1   r2   r3   r$   rÁ   rJ   rC   r[   r   r   r   r	   r¯   Â  s    
r¯   N)*Ú__doc__Úcollectionsr   Z
zope.eventr   ÚImportErrorZzope.interface.interfacesr   r   r   r   r   r   r   r   r   Zzope.interface.interfacer   Zzope.interface.declarationsr   r   r   r   Zzope.interface.adapterr   Zzope.interface._compatr   r   Ú__all__r”   r   r5   r7   r   rx   rw   rˆ   r‰   ry   rŠ   rŸ   r¯   r   r   r   r	   Ú<module>   s\   ÿüC   /%%