U
    ÈZjôZ  ã                   @   sÎ  d Z ddlmZ zddlmZ W n ek
r<   dd„ ZY nX 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 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   s   d S ©N© )ÚargÚkwr   r   úZ/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-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_TYPESc                   @   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>0   s     z8_UnhashableComponentCounter.__init__.<locals>.<listcomp>)ÚitemsÚ_data)ÚselfZ	otherdictr   r   r   Ú__init__.   s    z$_UnhashableComponentCounter.__init__c                 C   s$   | j D ]\}}||kr|  S qdS ©Nr   )r    )r!   ÚkeyÚ	componentÚcountr   r   r   Ú__getitem__2   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__8   s
    z'_UnhashableComponentCounter.__setitem__c                 C   s:   t | jƒD ]"\}}|d |kr
| j|=  d S q
t|ƒ‚d S r#   )r(   r    ÚKeyError)r!   r%   r*   r+   r   r   r   Ú__delitem__?   s
    z'_UnhashableComponentCounter.__delitem__N)Ú__name__Ú
__module__Ú__qualname__r"   r'   r,   r.   r   r   r   r   r   +   s   r   c                   C   s   t tƒS r   )r   Úintr   r   r   r   Ú_defaultdict_intF   s    r3   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   r3   Ú_cacheÚ
_utilitiesÚ_utility_registrationsÚ%_UtilityRegistrations__populate_cache)r!   Ú	utilitiesZutility_registrationsr   r   r   r"   K   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_cacheS   s    z&_UtilityRegistrations.__populate_cachec                 C   s\   z| j | |  d7  < W n< tk
rV   t| j | ƒ }| j |< ||  d7  < Y nX d S )Né   )r5   Ú	TypeErrorr   )r!   Úprovidedr%   Zprovr   r   r   Z__cache_utilityX   s
    z%_UtilityRegistrations.__cache_utilityc                 C   s:   | j | }|| }|d8 }|dkr*||= n|||< |dkS )Nr>   r   )r5   )r!   r@   r%   r&   r   r   r   Z__uncache_utilitya   s    
z'_UtilityRegistrations.__uncache_utilityc                 C   s0   z| j | | dkW S  tk
r*   Y dS X d S )Nr   F)r5   r?   )r!   r@   r%   r   r   r   Ú_is_utility_subscribedp   s    z,_UtilityRegistrations._is_utility_subscribedc                 C   sV   |   ||¡}|||f| j||f< | j d|||¡ |sF| j d||¡ |  ||¡ d S ©Nr   )rA   r7   r6   ÚregisterÚ	subscriber;   )r!   r@   Únamer%   ÚinfoÚfactoryÚ
subscribedr   r   r   ÚregisterUtilityw   s    z%_UtilityRegistrations.registerUtilityc                 C   s@   | j ||f= | j d||¡ |  ||¡}|s<| j d||¡ d S rB   )r7   r6   Ú
unregisterÚ&_UtilityRegistrations__uncache_utilityÚunsubscribe)r!   r@   rE   r%   rH   r   r   r   ÚunregisterUtility‚   s
    z'_UtilityRegistrations.unregisterUtilityN)
r/   r0   r1   r"   r8   r;   rK   rA   rI   rM   r   r   r   r   r4   I   s   	r4   c                       sD  e Zd ZdZdFd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dGdd„ZdHdd„Zdd„ ZdIdd„ZdJd d!„Zd"d#„ Zd$d%„ ZdKd&d'„ZdLd(d)„Zd*d+„ ZdMd,d-„ZdNd.d/„ZdOd0d1„ZdPd2d3„Zd4d5„ ZdQd6d7„Zd8d9„ ZdRd:d;„Zd<d=„ Z dSd>d?„Z!d@dA„ Z"dTdBdC„Z#dDdE„ Z$‡  Z%S )UÚ
ComponentsNÚ r   c                 C   s8   t |tƒst‚|| _|  ¡  |  ¡  t|ƒ| _d | _d S r   )	Ú
isinstancer   ÚAssertionErrorr/   Ú_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| jf S )Nz<%s %s>)Ú	__class__r/   ©r!   r   r   r   Ú__repr__›   s    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>é   )ÚsuperrN   Ú
__reduce__r   ÚlistrT   )r!   Z	reductionZfiltered_state©rX   r   r   ra   ž   s
    zComponents.__reduce__c                 C   s   t ƒ | _t ƒ | _d S r   )r   Úadaptersr9   rY   r   r   r   rR   ­   s    zComponents._init_registriesc                 C   s   i | _ i | _g | _g | _d S r   )r7   Ú_adapter_registrationsÚ_subscription_registrationsÚ_handler_registrationsrY   r   r   r   rS   ³   s    zComponents._init_registrationsc                 C   s>   | j }|d ks&|j| jk	s&|j| jk	r:t| j| jƒ }| _ |S r   )rV   r6   r9   r7   r4   )r!   Úcacher   r   r   Ú_utility_registrations_cache¹   s    
ÿ
þþ
z'Components._utility_registrations_cachec                 C   s   | j  dd¡S )NrU   r   )Ú__dict__ÚgetrY   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   s   g | ]
}|j ‘qS r   )rd   ©r   Úbaser   r   r   r   Ì   s    z(Components._setBases.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   )r9   rm   r   r   r   r   Î   s    rU   )rT   rd   rU   r9   rj   ©r!   rW   r   r   r   Ú	_setBasesÊ   s    ÿÿzComponents._setBasesc                 C   s   |   ¡ S r   )rl   rY   r   r   r   Ú<lambda>Ó   r	   zComponents.<lambda>c                 C   s
   |   |¡S r   )rp   ro   r   r   r   rq   Ô   r	   Tc              	   C   s®   |r|rt dƒ‚|ƒ }|d kr&t|ƒ}|dkr6t|ƒ}| j ||f¡}|d k	rx|d d… ||fkrfd S |  |d ||¡ | j |||||¡ |rªtt	t
| |||||ƒƒƒ d S )Nú$Can't specify factory and component.rO   r_   r   )r?   Ú_getUtilityProvidedÚ_getNamer7   rk   rM   ri   rI   r   r   ÚUtilityRegistration)r!   r%   r@   rE   rF   ÚeventrG   Úregr   r   r   rI   ×   s4        ÿÿÿzComponents.registerUtilityc                 C   s®   |r|rt dƒ‚|ƒ }|d kr6|d kr.t dƒ‚t|ƒ}| j ||f¡}|d ksb|d k	rf||d krfdS |d krv|d }| j |||¡ ttt| |||f|dd … žŽ ƒƒ dS )Nrr   z3Must specify one of component, factory and providedr   Fr>   T)	r?   rs   r7   rk   ri   rM   r   r   ru   )r!   r%   r@   rE   rG   Úoldr   r   r   rM   ô   s0    
ÿ  ÿÿzComponents.unregisterUtilityc                 c   s4   t | j ¡ ƒD ] \\}}}t| ||f|žŽ V  qd S r   )r:   r7   r   ru   )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  s    zComponents.queryUtilityc                 C   s&   | j  d||¡}|d kr"t||ƒ‚|S rB   )r9   rz   r   )r!   r@   rE   Úutilityr   r   r   Ú
getUtility  s    
zComponents.getUtilityc                 c   s&   | j  d|¡D ]\}}||fV  qd S rB   )r9   Ú	lookupAll)r!   Ú	interfacerE   r}   r   r   r   ÚgetUtilitiesFor!  s    zComponents.getUtilitiesForc                 C   s   | j  d|¡S rB   )r9   Zsubscriptions)r!   r€   r   r   r   ÚgetAllUtilitiesRegisteredFor%  s    z'Components.getAllUtilitiesRegisteredForc              	   C   sr   |d krt |ƒ}t||ƒ}|dkr*t|ƒ}||f| j|||f< | j ||||¡ |rnttt| |||||ƒƒƒ d S ©NrO   )	Ú_getAdapterProvidedÚ_getAdapterRequiredrt   re   rd   rC   r   r   ÚAdapterRegistration©r!   rG   Úrequiredr@   rE   rF   rv   r   r   r   ÚregisterAdapter(  s    
ÿ
 ÿÿzComponents.registerAdapterc                 C   s²   |d kr |d krt dƒ‚t|ƒ}|d kr8|d kr8t dƒ‚t||ƒ}| j |||f¡}|d ksp|d k	rt||d krtdS | j|||f= | j |||¡ ttt	| |||f|žŽ ƒƒ dS )Nú(Must specify one of factory and providedú(Must specify one of factory and requiredr   FT)
r?   r„   r…   re   rk   rd   rJ   r   r   r†   )r!   rG   rˆ   r@   rE   rx   r   r   r   ÚunregisterAdapter:  s(    

ÿÿÿzComponents.unregisterAdapterc                 c   s:   t | j ¡ ƒD ]&\\}}}\}}t| |||||ƒV  qd S r   )r:   re   r   r†   )r!   rˆ   r@   rE   r%   rF   r   r   r   ÚregisteredAdaptersU  s    ÿ
 ÿzComponents.registeredAdaptersc                 C   s   | j  ||||¡S r   )rd   ÚqueryAdapter)r!   Úobjectr€   rE   r{   r   r   r   rŽ   [  s    zComponents.queryAdapterc                 C   s(   | j  |||¡}|d kr$t|||ƒ‚|S r   )rd   rŽ   r   )r!   r�   r€   rE   Úadapterr   r   r   Ú
getAdapter^  s    zComponents.getAdapterc                 C   s   | j  ||||¡S r   )rd   ÚqueryMultiAdapter)r!   Úobjectsr€   rE   r{   r   r   r   r’   d  s       ÿzComponents.queryMultiAdapterc                 C   s(   | j  |||¡}|d kr$t|||ƒ‚|S r   )rd   r’   r   )r!   r“   r€   rE   r�   r   r   r   ÚgetMultiAdapteri  s    zComponents.getMultiAdapterc                 c   s@   | j  ttt|ƒƒ|¡D ]"\}}||Ž }|d k	r||fV  qd S r   )rd   r   rb   Úmapr   )r!   r“   r@   rE   rG   r�   r   r   r   ÚgetAdapterso  s    þzComponents.getAdaptersc              	   C   sn   |rt dƒ‚|d krt|ƒ}t||ƒ}| j |||||f¡ | j |||¡ |rjttt	| |||||ƒƒƒ d S )Nú'Named subscribers are not yet supported)
r?   r„   r…   rf   r)   rd   rD   r   r   ÚSubscriptionRegistrationr‡   r   r   r   ÚregisterSubscriptionAdapterw  s     
ÿ
 ÿÿz&Components.registerSubscriptionAdapterc                 c   s    | j D ]}t| f|žŽ V  qd S r   )rf   r˜   ©r!   r+   r   r   r   ÚregisteredSubscriptionAdapters‹  s    
z)Components.registeredSubscriptionAdaptersc              	      sØ   |rt dƒ‚ˆd kr,ˆ d kr$t dƒ‚tˆ ƒ‰ˆd krDˆ d krDt dƒ‚tˆ ˆƒ‰ˆ d krn‡‡fdd„| jD ƒ}n‡ ‡‡fdd„| jD ƒ}t|ƒt| jƒkrœd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 | ]4\}}}}}|ˆkr*|ˆkr*|ˆ ks|||||f‘qS r   r   rœ   ©rG   r@   rˆ   r   r   r   ¥  s
     ýFrO   T)
r?   r„   r…   rf   Úlenrd   rL   r   r   r˜   )r!   rG   rˆ   r@   rE   Únewr   r    r   ÚunregisterSubscriptionAdapter�  s6    
þþ
 ÿÿz(Components.unregisterSubscriptionAdapterc                 C   s   | j  ||¡S r   ©rd   Úsubscribers)r!   r“   r@   r   r   r   r¥   ¹  s    zComponents.subscribersc                 C   sZ   |rt dƒ‚t||ƒ}| j ||||f¡ | j |d |¡ |rVttt| ||||ƒƒƒ d S )Nz$Named handlers are not yet supported)	r?   r…   rg   r)   rd   rD   r   r   ÚHandlerRegistration)r!   rG   rˆ   rE   rF   rv   r   r   r   ÚregisterHandler¼  s    

ÿÿzComponents.registerHandlerc                 c   s    | j D ]}t| f|žŽ V  qd S r   )rg   r¦   rš   r   r   r   ÚregisteredHandlersÍ  s    
zComponents.registeredHandlersc                    s²   |rt dƒ‚ˆd kr$ˆ d kr$t dƒ‚tˆ ˆƒ‰ˆ d krL‡fdd„| jD ƒ}n‡ ‡fdd„| jD ƒ}t|ƒt| jƒkrxd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   
 ýFrO   T)	r?   r…   rg   r¡   rd   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ó  s    zComponents.handle)rO   r   )NNrO   rO   TN)NNrO   N)rO   N)rO   )NNrO   rO   T)NNNrO   )rO   N)rO   )rO   N)rO   )NNrO   rO   T)NNNrO   )NrO   rO   T)NNrO   )&r/   r0   r1   rV   r"   rZ   ra   rR   rS   Úpropertyri   rl   rp   rU   rI   rM   ry   r|   r~   r�   r‚   r‰   rŒ   r�   rŽ   r‘   r’   r”   r–   r™   r›   r£   r¥   r§   r¨   r«   r¬   Ú__classcell__r   r   rc   r   rN   Œ   s„   


þ      ÿ
  ÿ


      ÿ
      ÿ


  ÿ

	       ý
      ÿ
*     ý

"rN   c                 C   s$   z| j W S  tk
r   Y dS X d S rƒ   )Z__component_name__ÚAttributeError)r%   r   r   r   rt   ÷  s    rt   c                 C   s,   t t| ƒƒ}t|ƒdkr |d S tdƒ‚d S )Nr>   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)rb   r   r¡   r?   )r%   r@   r   r   r   rs   ý  s    ÿrs   c                 C   s,   t t| ƒƒ}t|ƒdkr |d S tdƒ‚d S )Nr>   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)rb   r   r¡   r?   )rG   r@   r   r   r   r„     s    ÿr„   c                 C   s˜   |d kr2z
| j }W qD tk
r.   tdƒ‚Y qDX nt |¡rDtdƒ‚g }|D ]B}|d kr^t}n&t |¡s„t|tƒr|t|ƒ}ntdƒ‚| 	|¡ qLt
|ƒ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 interfacez8Required specification must be a specification or class.)Z__component_adapts__r¯   r?   r
   r   r   rP   r   r   r)   rT   )rG   rˆ   Úresultr�   r   r   r   r…     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 )ru   Nc                 C   s,   ||||||f\| _ | _| _| _| _| _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	f S )Nz%s(%r, %s, %r, %s, %r, %r)r/   )
rX   r/   r±   Úgetattrr@   rE   r%   ÚreprrG   rF   rY   r   r   r   rZ   1  s      ûzUtilityRegistration.__repr__c                 C   s   t | ƒS r   ©ÚidrY   r   r   r   Ú__hash__:  s    zUtilityRegistration.__hash__c                 C   s   t | ƒt |ƒkS r   ©r´   ©r!   Úotherr   r   r   Ú__eq__=  s    zUtilityRegistration.__eq__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   Ú__ne__@  s    zUtilityRegistration.__ne__c                 C   s   t | ƒt |ƒk S r   r¸   r¹   r   r   r   Ú__lt__C  s    zUtilityRegistration.__lt__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   Ú__le__F  s    zUtilityRegistration.__le__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   Ú__gt__I  s    zUtilityRegistration.__gt__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   Ú__ge__L  s    zUtilityRegistration.__ge__)N©r/   r0   r1   r"   rZ   r·   r»   r¼   r½   r¾   r¿   rÀ   r   r   r   r   ru   )  s   
	ru   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"   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   s   g | ]
}|j ‘qS r   ©r/   ©r   r�   r   r   r   r   [  s     z0AdapterRegistration.__repr__.<locals>.<listcomp>ú]r/   )rX   r/   r±   Újoinrˆ   r³   r@   rE   rG   r´   rF   rY   r   r   r   rZ   W  s      ûzAdapterRegistration.__repr__c                 C   s   t | ƒS r   rµ   rY   r   r   r   r·   `  s    zAdapterRegistration.__hash__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   r»   c  s    zAdapterRegistration.__eq__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   r¼   f  s    zAdapterRegistration.__ne__c                 C   s   t | ƒt |ƒk S r   r¸   r¹   r   r   r   r½   i  s    zAdapterRegistration.__lt__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   r¾   l  s    zAdapterRegistration.__le__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   r¿   o  s    zAdapterRegistration.__gt__c                 C   s   t | ƒt |ƒkS r   r¸   r¹   r   r   r   rÀ   r  s    zAdapterRegistration.__ge__NrÁ   r   r   r   r   r†   O  s   	r†   c                   @   s   e Zd ZdS )r˜   N)r/   r0   r1   r   r   r   r   r˜   u  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È   rY   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	f S )Nz%s(%r, %s, %r, %s, %r)rÂ   rÃ   c                 S   s   g | ]
}|j ‘qS r   rÄ   rÅ   r   r   r   r   ‹  s     z0HandlerRegistration.__repr__.<locals>.<listcomp>rÆ   r/   )
rX   r/   r±   rÇ   rˆ   rE   r³   rG   r´   rF   rY   r   r   r   rZ   ‡  s     ûzHandlerRegistration.__repr__)r/   r0   r1   r"   r­   rG   r@   rZ   r   r   r   r   r¦   z  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   r�   r   r3   r4   rN   rt   rs   r„   r…   ru   r†   r˜   r¦   r   r   r   r   Ú<module>   sR   C  l%%