o
    Êó·iÂg  ã                   @   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gZG dd„ dƒZdd„ ZG dd„ dƒZe
eƒG dd„ dƒƒZdd„ Zdd „ Zd!d"„ Z d#d$„ Z!e
eƒG d%d&„ d&ƒƒZ"e
eƒG d'd(„ d(ƒƒZ#eeƒG d)d*„ d*e#ƒƒZ$eeƒG d+d,„ d,e#ƒƒZ%d-S ).zBasic components support
é    )Údefaultdict)Únotifyc                  O   ó   d S ©N© )ÚargÚkwr   r   ú]C:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\zope/interface/registry.pyr      s   r   )ÚAdapterRegistry)ÚimplementedBy)Úimplementer)Úimplementer_only)Ú
providedBy)Ú	Interface)ÚComponentLookupError)ÚIAdapterRegistration)ÚIComponents)ÚIHandlerRegistration)ÚISpecification)Ú ISubscriptionAdapterRegistration)ÚIUtilityRegistration)Ú
Registered)ÚUnregisteredÚ
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>7   s    z8_UnhashableComponentCounter.__init__.<locals>.<listcomp>)ÚitemsÚ_data)ÚselfZ	otherdictr   r   r	   Ú__init__5   s   z$_UnhashableComponentCounter.__init__c                 C   s$   | j D ]\}}||kr|  S qdS ©Nr   )r   )r    ÚkeyÚ	componentÚcountr   r   r	   Ú__getitem__9   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__F   s   þz'_UnhashableComponentCounter.__delitem__N)Ú__name__Ú
__module__Ú__qualname__r!   r&   r+   r-   r   r   r   r	   r   2   s
    r   c                   C   s   t tƒS r   )r   Úintr   r   r   r	   Ú_defaultdict_intN   ó   r2   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   r2   Ú_cacheÚ
_utilitiesÚ_utility_registrationsÚ%_UtilityRegistrations__populate_cache)r    Ú	utilitiesZutility_registrationsr   r   r	   r!   T   s   
z_UtilityRegistrations.__init__c                 C   s4   t | j ¡ ƒD ]\\}}}|d }|  ||¡ qd S r"   )Úiterr7   r   Ú$_UtilityRegistrations__cache_utility)r    ÚpÚ_r*   r$   r   r   r	   Z__populate_cache\   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é   )r5   Ú	TypeErrorr   )r    Úprovidedr$   Zprovr   r   r	   Z__cache_utilitya   s   ÿúz%_UtilityRegistrations.__cache_utilityc                 C   s@   | j | }|| }|d8 }|dkr||= |dkS |||< |dkS )Nr>   r   )r5   )r    r@   r$   r%   r   r   r	   Z__uncache_utilityl   s   
ÿz'_UtilityRegistrations.__uncache_utilityc                 C   s*   z
| j | | dkW S  ty   Y dS w )Nr   F)r5   r?   )r    r@   r$   r   r   r	   Ú_is_utility_subscribed{   s
   þz,_UtilityRegistrations._is_utility_subscribedc                 C   sV   |   ||¡}|||f| j||f< | j d|||¡ |s#| j d||¡ |  ||¡ d S ©Nr   )rA   r7   r6   ÚregisterÚ	subscriber;   )r    r@   Únamer$   ÚinfoÚfactoryÚ
subscribedr   r   r	   ÚregisterUtility‚   s   þÿz%_UtilityRegistrations.registerUtilityc                 C   sD   | j ||f= | j d||¡ |  ||¡}|s | j d||¡ d S d S rB   )r7   r6   Ú
unregisterÚ&_UtilityRegistrations__uncache_utilityÚunsubscribe)r    r@   rE   r$   rH   r   r   r	   ÚunregisterUtility�   s   ÿz'_UtilityRegistrations.unregisterUtilityN)
r.   r/   r0   r!   r8   r;   rK   rA   rI   rM   r   r   r   r	   r4   R   s    r4   c                       sp  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   )Ú
isinstanceÚstrr.   Ú_init_registriesÚ_init_registrationsÚtupleÚ	__bases__Ú_v_utility_registrations_cache)r    rE   Úbasesr   r   r	   r!   ž   s   

zComponents.__init__c                 C   s   d| j j› d| j› d�S )Nú<ú ú>)Ú	__class__r.   ©r    r   r   r	   Ú__repr__¨   s   zComponents.__repr__c                    s8   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>é   )ÚsuperÚ
__reduce__r   ÚlistrS   )r    Z	reductionZfiltered_state©rZ   r   r	   rc   «   s
   
zComponents.__reduce__c                 C   s   t ƒ | _t ƒ | _d S r   )r
   Úadaptersr9   r[   r   r   r	   rQ   º   s   zComponents._init_registriesc                 C   s   i | _ i | _g | _g | _d S r   )r7   Ú_adapter_registrationsÚ_subscription_registrationsÚ_handler_registrationsr[   r   r   r	   rR   À   s   
zComponents._init_registrationsc                 C   s>   | j }|d u s|j| jus|j| jurt| j| jƒ }| _ |S r   )rU   r6   r9   r7   r4   )r    Úcacher   r   r	   Ú_utility_registrations_cacheÆ   s   ÿ
þ
ýÿÿz'Components._utility_registrations_cachec                 C   s   | j  dd¡S )NrT   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   )rf   ©r   Úbaser   r   r	   r   Ý   ó    ÿz(Components._setBases.<locals>.<listcomp>c                 S   ro   r   )r9   rp   r   r   r	   r   ß   rr   rT   )rS   rf   rT   r9   rl   ©r    rV   r   r   r	   Ú	_setBasesÛ   s   ÿÿzComponents._setBasesc                 C   s   |   ¡ S r   )rn   r[   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.rN   ra   r   )r?   Ú_getUtilityProvidedÚ_getNamer7   rm   rM   rk   rI   r   r   ÚUtilityRegistration)r    r$   r@   rE   rF   ÚeventrG   Úregr   r   r	   rI   è   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   Fr>   T)	r?   rw   r7   rm   rk   rM   r   r   ry   )r    r$   r@   rE   rG   Úoldr   r   r	   rM     s,   
ÿÿÿzComponents.unregisterUtilityc                 c   s8   � t | j ¡ ƒD ]\\}}}t| ||g|¢R Ž V  qd S r   )r:   r7   r   ry   )r    r@   rE   r*   r   r   r	   ÚregisteredUtilities$  s
   €ÿþzComponents.registeredUtilitiesc                 C   s   | j  d|||¡S rB   )r9   Úlookup)r    r@   rE   Údefaultr   r   r	   ÚqueryUtility)  ó   zComponents.queryUtilityc                 C   s&   | j  d||¡}|d u rt||ƒ‚|S rB   )r9   r~   r   )r    r@   rE   Zutilityr   r   r	   Ú
getUtility,  s   
zComponents.getUtilityc                 c   s   � | j  d|¡E d H  d S rB   )r9   Ú	lookupAll©r    Ú	interfacer   r   r	   ÚgetUtilitiesFor2  s   €zComponents.getUtilitiesForc                 C   s   | j  d|¡S rB   )r9   Zsubscriptionsr„   r   r   r	   ÚgetAllUtilitiesRegisteredFor5  ó   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 ©NrN   )	Ú_getAdapterProvidedÚ_getAdapterRequiredrx   rg   rf   rC   r   r   ÚAdapterRegistration©r    rG   Úrequiredr@   rE   rF   rz   r   r   r	   ÚregisterAdapter8  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)
r?   rŠ   r‹   rg   rm   rf   rJ   r   r   rŒ   )r    rG   rŽ   r@   rE   r|   r   r   r	   ÚunregisterAdapterJ  s$   

ÿÿzComponents.unregisterAdapterc                 c   s<   � t | j ¡ ƒD ]\\}}}\}}t| |||||ƒV  qd S r   )r:   rg   r   rŒ   )r    rŽ   r@   rE   r$   rF   r   r   r	   ÚregisteredAdaptersd  s   €ÿ
ÿþzComponents.registeredAdaptersc                 C   ó   | j  ||||¡S r   )rf   ÚqueryAdapter)r    Úobjectr…   rE   r   r   r   r	   r•   j  r�   zComponents.queryAdapterc                 C   ó(   | j  |||¡}|d u rt|||ƒ‚|S r   )rf   r•   r   )r    r–   r…   rE   Úadapterr   r   r	   Ú
getAdapterm  ó   zComponents.getAdapterc                 C   r”   r   )rf   ÚqueryMultiAdapter)r    Úobjectsr…   rE   r   r   r   r	   r›   s  s   ÿzComponents.queryMultiAdapterc                 C   r—   r   )rf   r›   r   )r    rœ   r…   rE   r˜   r   r   r	   ÚgetMultiAdapterx  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œ   r@   rE   rG   r˜   r   r   r	   ÚgetAdapters~  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)
r?   rŠ   r‹   rh   r(   rf   rD   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)   )r@   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§   ©rG   r@   rŽ   r   r	   r   µ  s    ýýýFrN   T)
r?   rŠ   r‹   rh   Úlenrf   rL   r   r   r¡   )r    rG   rŽ   r@   rE   Únewr   r«   r	   ÚunregisterSubscriptionAdapterŸ  s4   
þþÿÿz(Components.unregisterSubscriptionAdapterc                 C   s   | j  ||¡S r   ©rf   Úsubscribers)r    rœ   r@   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)	r?   r‹   ri   r(   rf   rD   r   r   ÚHandlerRegistration)r    rG   rŽ   rE   rF   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´   ©rG   rŽ   r   r	   r   ñ  s    
ýýFrN   T)	r?   r‹   ri   r¬   rf   rL   r   r   r±   )r    rG   rŽ   rE   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   (  ó    zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>c                  W   r   r   r   )Úargsr   r   r	   ru   .  r¹   r   r>   N)Úneeded_registeredÚdid_not_registerÚneeded_subscribedÚdid_not_subscribe)
Údictr7   r9   rl   r¸   rC   rD   r   Z
registeredrH   )r    ZrebuildÚregsÚutilsr»   r¼   r½   r¾   rC   rD   r@   rE   ÚvalueÚ_infoÚ_factoryr   r   r	   Ú$rebuildUtilityRegistryFromLocalCache  sH   



õ
€þÿüz/Components.rebuildUtilityRegistryFromLocalCache)rN   r   )NNrN   rN   TN)NNrN   N)rN   N)rN   )NNrN   rN   T)NNNrN   )NrN   rN   T)NNrN   )F)'r.   r/   r0   rU   r!   r\   rc   rQ   rR   Úpropertyrk   rn   rt   rT   rI   rM   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   ™   sp    


þ
ÿ
ÿ


ÿ
ÿ


ÿ
	
ý
ÿ*
ý
"c                 C   s   z| j W S  ty   Y dS w r‰   )Z__component_name__ÚAttributeError)r$   r   r   r	   rx   J  s
   ÿrx   c                 C   ó(   t t| ƒƒ}t|ƒdkr|d S tdƒ‚)Nr>   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)rd   r   r¬   r?   )r$   r@   r   r   r	   rw   Q  ó   ÿrw   c                 C   rÉ   )Nr>   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)rd   r   r¬   r?   )rG   r@   r   r   r	   rŠ   [  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È   r?   r   r   r   rO   Útyper   r(   rS   )rG   rŽ   Úresultr¨   r   r   r	   r‹   e  s4   
ÿÿ
ÿ


ÿÿ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   s(   || _ || _|| _|| _|| _|| _d S r   )Úregistryr@   rE   r$   rF   rG   )r    rÍ   r@   rE   r$   ÚdocrG   r   r   r	   r!   ‡  s   
zUtilityRegistration.__init__c                 C   s<   d  | jj| jt| jdd ƒ| jt| jdt| jƒƒ| j	| j
¡S )Nz"{}({!r}, {}, {!r}, {}, {!r}, {!r})r.   )ÚformatrZ   r.   rÍ   Úgetattrr@   rE   r$   ÚreprrG   rF   r[   r   r   r	   r\   �  s   ûzUtilityRegistration.__repr__c                 C   ó   t | ƒS r   ©Úidr[   r   r   r	   Ú__hash__˜  r3   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   ©r.   r/   r0   r!   r\   rÕ   rÚ   rÝ   rß   rá   rã   rå   r   r   r   r	   ry   „  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   s,   ||||||f\| _ | _| _| _| _| _d S r   )rÍ   rŽ   r@   rE   rG   rF   )r    rÍ   rŽ   r@   rE   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¡S )Nz {}({!r}, {}, {}, {!r}, {}, {!r})ú[ú, c                 S   ro   r   ©r.   ©r   r¨   r   r   r	   r   º  ó    z0AdapterRegistration.__repr__.<locals>.<listcomp>ú]r.   )rÏ   rZ   r.   rÍ   ÚjoinrŽ   rÐ   r@   rE   rG   rÑ   rF   r[   r   r   r	   r\   ¶  s   ûzAdapterRegistration.__repr__c                 C   rÒ   r   rÓ   r[   r   r   r	   rÕ   ¿  r3   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)r.   r/   r0   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Ž   rE   ÚhandlerrF   )r    rÍ   rŽ   rE   rî   rÎ   r   r   r	   r!   Ý  s   ÿzHandlerRegistration.__init__c                 C   s   | j S r   )rî   r[   r   r   r	   rG   á  s   zHandlerRegistration.factoryNc                 C   sH   d  | jj| jdd dd„ | jD ƒ¡ d | jt| jdt	| jƒƒ| j
¡S )Nz{}({!r}, {}, {!r}, {}, {!r})rç   rè   c                 S   ro   r   ré   rê   r   r   r	   r   ë  rë   z0HandlerRegistration.__repr__.<locals>.<listcomp>rì   r.   )rÏ   rZ   r.   rÍ   rí   rŽ   rE   rÐ   rG   rÑ   rF   r[   r   r   r	   r\   ç  s   ûzHandlerRegistration.__repr__)r.   r/   r0   r!   rÆ   rG   r@   r\   r   r   r   r	   r±   Ú  s    
r±   N)&Ú__doc__Úcollectionsr   Z
zope.eventr   ÚImportErrorZzope.interface.adapterr
   Zzope.interface.declarationsr   r   r   r   Zzope.interface.interfacer   Zzope.interface.interfacesr   r   r   r   r   r   r   r   r   Ú__all__r   r2   r4   r   rx   rw   rŠ   r‹   ry   rŒ   r¡   r±   r   r   r   r	   Ú<module>   sX   ÿüG   3

)&