
    tfd                     ~   d Z ddlmZ 	 ddlmZ n# e$ r d ZY nw xY 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          Zd Z G d d          Z e
e           G d d                      Zd Zd Zd Z d Z! e
e           G d d                       Z" e
e           G d! d"                      Z# ee           G d# d$e#                      Z$ ee           G d% d&e#                      Z%d'S )(zBasic components support
    )defaultdict)notifyc                      d S N )argkws     V/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/zope/interface/registry.pyr   r      s        )AdapterRegistry)implementedBy)implementer)implementer_only)
providedBy)	Interface)ComponentLookupError)IAdapterRegistration)IComponents)IHandlerRegistration)ISpecification) ISubscriptionAdapterRegistration)IUtilityRegistration)
Registered)Unregistered
Componentsc                   &    e Zd Zd Zd Zd Zd ZdS )_UnhashableComponentCounterc                 L    d |                                 D             | _        d S )Nc                     g | ]}|S r   r   ).0items     r
   
<listcomp>z8_UnhashableComponentCounter.__init__.<locals>.<listcomp>7   s    999td999r   )items_data)self	otherdicts     r
   __init__z$_UnhashableComponentCounter.__init__5   s%    99y'8'8999


r   c                 4    | j         D ]\  }}||k    r|c S dS Nr   )r$   )r%   key	componentcounts       r
   __getitem__z'_UnhashableComponentCounter.__getitem__9   s6     $
 	 	IuC  qr   c                     t          | j                  D ] \  }}|d         |k    r||f| j        |<    d S !| j                            ||f           d S r)   )	enumerater$   append)r%   r+   r,   idatas        r
   __setitem__z'_UnhashableComponentCounter.__setitem__?   sm     ,, 	 	GAtAw)## )5 0
1 $ 	
9e,-----r   c                     t          | j                  D ]\  }}|d         |k    r| j        |=  d S t          |          r)   )r/   r$   KeyError)r%   r+   r1   r2   s       r
   __delitem__z'_UnhashableComponentCounter.__delitem__F   sS     ,, 	 	GAtAw)##JqM $ y!!!r   N)__name__
__module____qualname__r'   r-   r3   r6   r   r   r
   r   r   2   sP        : : :  . . ." " " " "r   r   c                  *    t          t                    S r   )r   intr   r   r
   _defaultdict_intr<   N   s    sr   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	_UtilityRegistrationsc                 |    t          t                    | _        || _        || _        |                                  d S r   )r   r<   _cache
_utilities_utility_registrations%_UtilityRegistrations__populate_cache)r%   	utilitiesutility_registrationss      r
   r'   z_UtilityRegistrations.__init__T   s9    !"233#&;#r   c                     t          | j                                                  D ]&\  \  }}}|d         }|                     ||           'd S r)   )iterrB   r#   $_UtilityRegistrations__cache_utility)r%   p_r2   r+   s        r
   __populate_cachez&_UtilityRegistrations.__populate_cache\   s\    "4#>#D#D#F#FGG 	/ 	/NVaTQI  I....	/ 	/r   c                     	 | j         |         |xx         dz  cc<   d S # t          $ r8 t          | j         |                   x}| j         |<   ||xx         dz  cc<   Y d S w xY w)N   )r@   	TypeErrorr   )r%   providedr+   provs       r
   __cache_utilityz%_UtilityRegistrations.__cache_utilitya   s    	!K!),,,1,,,,, 	! 	! 	! ,GH%, , D4;x( OOOq OOOOOO	!s    >A! A!c                 `    | j         |         }||         }|dz  }|dk    r||= n|||<   |dk    S )NrM   r   )r@   )r%   rO   r+   r,   s       r
   __uncache_utilityz'_UtilityRegistrations.__uncache_utilityl   sK    ;x( #
A::##"'HYqyr   c                 T    	 | j         |         |         dk    S # t          $ r Y dS w xY w)Nr   F)r@   rN   )r%   rO   r+   s      r
   _is_utility_subscribedz,_UtilityRegistrations._is_utility_subscribed{   s@    	;x(3a77 	 	 	55	s    
''c                     |                      ||          }|||f| j        ||f<   | j                            d|||           |s| j                            d||           |                     ||           d S Nr   )rU   rB   rA   register	subscriberH   )r%   rO   namer+   infofactory
subscribeds          r
   registerUtilityz%_UtilityRegistrations.registerUtility   s    009EE
 tW$ 	#t	
 	  XtY??? 	?O%%b(I>>>Xy11111r   c                     | j         ||f= | j                            d||           |                     ||          }|s| j                            d||           d S d S rW   )rB   rA   
unregister&_UtilityRegistrations__uncache_utilityunsubscribe)r%   rO   rZ   r+   r]   s        r
   unregisterUtilityz'_UtilityRegistrations.unregisterUtility   sv    '4(89""2x666++Hi@@
 	AO''Hi@@@@@	A 	Ar   N)
r7   r8   r9   r'   rC   rH   ra   rU   r^   rc   r   r   r
   r>   r>   R   s             / / /
	! 	! 	!    2 2 2A A A A Ar   r>   c                   J    e Zd ZdZd(dZd Z fdZd Zd Ze	d	             Z
d
 Zd Z e	d d           Z	 	 d)dZ	 	 d*dZd Zd+dZd,dZd Zd Z	 	 d-dZ	 	 d.dZd Zd+dZd,dZ	 	 d+dZd,dZd Z	 	 	 d-dZd Z	 d.d Zd! Z 	 	 	 d/d"Z!d# Z"d0d$Z#d% Z$d1d'Z% xZ&S )2r   N r   c                     t          |t                    sJ || _        |                                  |                                  t          |          | _        d | _        d S r   )
isinstancestrr7   _init_registries_init_registrationstuple	__bases___v_utility_registrations_cache)r%   rZ   basess      r
   r'   zComponents.__init__   s`     $$$$$$  """u.2+++r   c                 2    d| j         j         d| j         dS )N< >)	__class__r7   r%   s    r
   __repr__zComponents.__repr__   s"    =4>*==T]====r   c                     t                                                      }d |d                                         D             }t          |          }||d<   t	          |          S )Nc                 D    i | ]\  }}|                     d           ||S )_v_)
startswith)r    kvs      r
   
<dictcomp>z)Components.__reduce__.<locals>.<dictcomp>   s>     6 6 641a!"e!4!46!Q 6 6 6r      )super
__reduce__r#   listrk   )r%   	reductionfiltered_staters   s      r
   r   zComponents.__reduce__   si    
 GG&&((	6 69Q<+=+=+?+? 6 6 6OO	%	!Yr   c                 R    t                      | _        t                      | _        d S r   )r   adaptersrD   rt   s    r
   ri   zComponents._init_registries   s"     ())(**r   c                 >    i | _         i | _        g | _        g | _        d S r   )rB   _adapter_registrations_subscription_registrations_handler_registrationsrt   s    r
   rj   zComponents._init_registrations   s(    &(#&(#+-(&(###r   c                     | j         }||j        | j        us|j        | j        ur!t	          | j        | j                  x}| _         |S r   )rm   rA   rD   rB   r>   )r%   caches     r
   _utility_registrations_cachez'Components._utility_registrations_cache   s^     3MDN22(0KKK &ND$? ED7
 r   c                 8    | j                             dd          S )Nrl   r   )__dict__getrt   s    r
   	_getBaseszComponents._getBases   s    }  b111r   c                     t          d |D                       | j        _        t          d |D                       | j        _        t          |          | j        d<   d S )Nc                     g | ]	}|j         
S r   )r   r    bases     r
   r"   z(Components._setBases.<locals>.<listcomp>   s'     )- )- )-"DM)- )- )-r   c                     g | ]	}|j         
S r   )rD   r   s     r
   r"   z(Components._setBases.<locals>.<listcomp>   s'     *. *. *.#DN*. *. *.r   rl   )rk   r   rl   rD   r   r%   rn   s     r
   	_setBaseszComponents._setBases   sz    "' )- )-&+)- )- )- #. #.#( *. *.',*. *. *. $/ $/ %*5\\k"""r   c                 *    |                                  S r   )r   rt   s    r
   <lambda>zComponents.<lambda>   s    T^^%% r   c                 ,    |                      |          S r   )r   r   s     r
   r   zComponents.<lambda>   s    DNN511 r   Tc                    |r|rt          d           |            }|t          |          }|dk    rt          |          }| j                            ||f          }|/|d d         ||fk    rd S |                     |d         ||           | j                            |||||           |r0t          t          t          | |||||                               d S d S )N$Can't specify factory and component.re   r}   r   )rN   _getUtilityProvided_getNamerB   r   rc   r   r^   r   r   UtilityRegistration)r%   r+   rO   rZ   r[   eventr\   regs           r
   r^   zComponents.registerUtility   s-    	" H FGGG		I*955H2::I&&D)--x.>???2A2w9d+++""3q68T:::)99dItW	6 	6 	6  	:#(D)T7D D      	 	r   c           
         |r|rt          d           |            }| |t          d          t          |          }| j                            ||f          }||||d         k    rdS ||d         }| j                            |||           t          t          t          | |||g|dd          R                       dS )Nr   z3Must specify one of component, factory and providedr   FrM   T)	rN   r   rB   r   r   rc   r   r   r   )r%   r+   rO   rZ   r\   olds         r
   rc   zComponents.unregisterUtility  s    	" H FGGG		I  !+ , , ,*955H)--x.>??Ki3'3q6115AI 	);;dI	' 	' 	' 	|hiJ#abb'JJJ
 
 	 	 	 tr   c              #      K   t          | j                                                  D ]\  \  }}}t          | ||g|R  V  d S r   )rG   rB   r#   r   )r%   rO   rZ   r2   s       r
   registeredUtilitieszComponents.registeredUtilities$  si      t288::;;	C 	C ht%dHdBTBBBBBBB	C 	Cr   c                 <    | j                             d|||          S rW   )rD   lookup)r%   rO   rZ   defaults       r
   queryUtilityzComponents.queryUtility)  s    ~$$R4AAAr   c                 b    | j                             d||          }|t          ||          |S rW   )rD   r   r   )r%   rO   rZ   utilitys       r
   
getUtilityzComponents.getUtility,  s5    .''Hd;;?&x666r   c              #   L   K   | j                             d|          E d {V  d S rW   )rD   	lookupAllr%   	interfaces     r
   getUtilitiesForzComponents.getUtilitiesFor2  s6      >++B	:::::::::::r   c                 8    | j                             d|          S rW   )rD   subscriptionsr   s     r
   getAllUtilitiesRegisteredForz'Components.getAllUtilitiesRegisteredFor5  s    ~++B	:::r   c                 .   |t          |          }t          ||          }|dk    rt          |          }||f| j        |||f<   | j                            ||||           |r0t          t          t          | |||||                               d S d S Nre   )	_getAdapterProvided_getAdapterRequiredr   r   r   rX   r   r   AdapterRegistrationr%   r\   requiredrO   rZ   r[   r   s          r
   registerAdapterzComponents.registerAdapter8  s    *733H&w992::G$$D(/ 	#Xx$> 	&x4AAA 	:#(HdGT       	 	r   c           
         | |t          d          t          |          }||t          d          t          ||          }| j                            |||f          }||||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)
rN   r   r   r   r   r   r`   r   r   r   )r%   r\   r   rO   rZ   r   s         r
   unregisterAdapterzComponents.unregisterAdapterJ  s      JKKK*733H7?FGGG&w99)--x4.HIIKg1%Q//5'8T(BC  8T:::|h$EEEE
 
 	 	 	 tr   c           	   #      K   t          | j                                                  D ]"\  \  }}}\  }}t          | |||||          V  #d S r   )rG   r   r#   r   )r%   r   rO   rZ   r+   r[   s         r
   registeredAdapterszComponents.registeredAdaptersd  sw      t288::;;	7 	7 'h$):)T%dHh&/7 7 7 7 7 7	7 	7r   c                 <    | j                             ||||          S r   )r   queryAdapter)r%   objectr   rZ   r   s        r
   r   zComponents.queryAdapterj  s    }))&)T7KKKr   c                 d    | j                             |||          }|t          |||          |S r   )r   r   r   )r%   r   r   rZ   adapters        r
   
getAdapterzComponents.getAdapterm  s7    -,,VYEE?&vy$???r   c                 <    | j                             ||||          S r   )r   queryMultiAdapter)r%   objectsr   rZ   r   s        r
   r   zComponents.queryMultiAdapters  s%    }..Yg/ / 	/r   c                 d    | j                             |||          }|t          |||          |S r   )r   r   r   )r%   r   r   rZ   r   s        r
   getMultiAdapterzComponents.getMultiAdapterx  s7    -11'9dKK?&w	4@@@r   c              #      K   | j                             t          t          t          |                    |          D ]\  }} || }|||fV  d S r   )r   r   r   mapr   )r%   r   rO   rZ   r\   r   s         r
   getAdapterszComponents.getAdapters~  sq      !]44Z))**H
 
 	$ 	$MD' gw'G"Gm###	$ 	$r   c                 D   |rt          d          |t          |          }t          ||          }| j                            |||||f           | j                            |||           |r0t          t          t          | |||||                               d S d S )N'Named subscribers are not yet supported)
rN   r   r   r   r0   r   rY   r   r   SubscriptionRegistrationr   s          r
   registerSubscriptionAdapterz&Components.registerSubscriptionAdapter  s      	GEFFF*733H&w99(//xw5	
 	
 	
 	(G<<< 	:((HdGT       	 	r   c              #   <   K   | j         D ]}t          | g|R  V  d S r   )r   r   r%   r2   s     r
   registeredSubscriptionAdaptersz)Components.registeredSubscriptionAdapters  sA      4 	8 	8D*47$7777777	8 	8r   c                 
   |rt          d           t          d          t                    t          d          t                    fd| j        D             }nfd| j        D             }t	          |          t	          | j                  k    rdS || j        d d <   | j                                       t          t          t          | |d                               dS )	Nr   r   r   c                 B    g | ]\  }}}}}|k    r|k    |||||fS r   r   )r    rrI   nfr1   rO   r   s         r
   r"   z<Components.unregisterSubscriptionAdapter.<locals>.<listcomp>  sH       &1aA==Q(]] q!Q? .;]]r   c                 N    g | ]!\  }}}}}|k    r|k    r|k    |||||f"S r   r   )	r    r   rI   r   r   r1   r\   rO   r   s	         r
   r"   z<Components.unregisterSubscriptionAdapter.<locals>.<listcomp>  sR       &1aA==Q(]]qG|| q!Q? @L||r   Fre   T)
rN   r   r   r   lenr   rb   r   r   r   )r%   r\   r   rO   rZ   news    ```  r
   unregisterSubscriptionAdapterz(Components.unregisterSubscriptionAdapter  sg     	GEFFF JKKK*733H7?FGGG&w99?    6  CC     6  C s88s4;<<<<5.1(+!!(Hg>>>|$h$ 
 
 	 	 	 tr   c                 8    | j                             ||          S r   r   subscribers)r%   r   rO   s      r
   r   zComponents.subscribers  s    }(((;;;r   c                    |rt          d          t          ||          }| j                            ||||f           | j                            |d |           |r/t          t          t          | ||||                               d S d S )Nz$Named handlers are not yet supported)	rN   r   r   r0   r   rY   r   r   HandlerRegistration)r%   r\   r   rZ   r[   r   s         r
   registerHandlerzComponents.registerHandler  s      	DBCCC&w99#**tWd+	
 	
 	
 	$888 	:#D(D'4HH      	 	r   c              #   <   K   | j         D ]}t          | g|R  V  d S r   )r   r   r   s     r
   registeredHandlerszComponents.registeredHandlers  sA      / 	3 	3D%d2T2222222	3 	3r   c                    |rt          d          t          d          t                    fd| j        D             }nfd| j        D             }t          |          t          | j                  k    rdS || j        d d <   | j                            d            t          t          t          | |d                               dS )Nr   r   c                 2    g | ]\  }}}}|k    ||||fS r   r   )r    r   r   r   r1   r   s        r
   r"   z0Components.unregisterHandler.<locals>.<listcomp>  s<       #1a8mm q!Q< $mmr   c                 >    g | ]\  }}}}|k    r|k    ||||fS r   r   )r    r   r   r   r1   r\   r   s        r
   r"   z0Components.unregisterHandler.<locals>.<listcomp>  sD       #1a==Q'\\ q!Q< .:\\r   Fre   T)	rN   r   r   r   r   rb   r   r   r   )r%   r\   r   rZ   r   s    ``  r
   unregisterHandlerzComponents.unregisterHandler  s,    	GEFFF7?FGGG&w99?   1  CC    1  C s88s4677775),#AAA&!!(D':::|hgrBB
 
 	 	 	 tr   c                 <    | j                             |d            d S r   r   )r%   r   s     r
   handlezComponents.handle  s     !!'400000r   Fc                 8   t          | j                  }| j        }d}d}d}d}d|j        vsJ d |_        |r|j        }|j        }	nd x}}		 |                                D ]o\  \  }
}\  }}}|                    d|
|          |k    r |d|
||           |dz  }n|dz  }|	                    d|
|          |dz  } |	d|
|           j|dz  }p	 |`|r|s|r|                    |           n$# |`|r|s|r|                    |           w w w xY 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                     d S r   r   )rJ   s    r
   r   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>(  s    $ r   c                      d S r   r   )argss    r
   r   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>.  s     r   r   rM   N)needed_registereddid_not_registerneeded_subscribeddid_not_subscribe)
dictrB   rD   r   r   rX   rY   r#   
registeredr]   )r%   rebuildregsutilsr   r   r   r   rX   rY   rO   rZ   value_info_factorys                  r
   $rebuildUtilityRegistryFromLocalCachez/Components.rebuildUtilityRegistryFromLocalCache  s   0 D/00 ....& 	6~HII#5#55Hy	%>Bjjll + +: 4":5%##B$775@@HR4777%*%%$)$##B%88@%*%Ib(E2222%*%%+  %- %1B %e$$$  %- %1B %e$$$$% % "3 0!2!2	
 
 	
s   BC1 1!D)re   r   )NNre   re   TN)NNre   N)re   N)re   )NNre   re   T)NNNre   )Nre   re   T)NNre   )F)'r7   r8   r9   rm   r'   ru   r   ri   rj   propertyr   r   r   rl   r^   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rs   s   @r
   r   r      s        &*"3 3 3 3> > >         + + +) ) )   X 2 2 22 2 2 %%11 I
 CE59   : EG"&   >C C C
B B B B   ; ; ;; ; ; @D04   $ )-=?   47 7 7L L L L    :<"&/ / / /
   $ $ $ FJ24*.   *8 8 8
 @B( ( ( (T< < < +/&("   "3 3 3       D1 1 1A
 A
 A
 A
 A
 A
 A
 A
r   c                 4    	 | j         S # t          $ r Y dS w xY wr   )__component_name__AttributeError)r+   s    r
   r   r   J  s2    ++   rrs   	 
c                     t          t          |                     }t          |          dk    r|d         S t          d          )NrM   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)r   r   r   rN   )r+   rO   s     r
   r   r   Q  sI    Jy))**H
8}}{
	3  r   c                     t          t          |                     }t          |          dk    r|d         S t          d          )NrM   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)r   r   r   rN   )r\   rO   s     r
   r   r   [  sI    M'**++H
8}}{
	3  r   c                    |&	 | j         }n@# t          $ r t          d          w xY wt          j        |          rt          d          g }|D ]y}|t
          }nXt          j        |          sDt          |t                    rt          |          }nt          dt          |          z            |	                    |           zt          |          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  rN   r   r   r   rg   typer   r0   rk   )r\   r   resultr   s       r
   r   r   e  s   	3HH 	 	 	J  	
 
	"8	,	, 
1
 
 	

 F  9AA*1-- 	!T"" !!$$57;Aww?   	a==s    &c                   F    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 ZdS )r   Nc                 Z    || _         || _        || _        || _        || _        || _        d S r   )registryrO   rZ   r+   r[   r\   )r%   r  rO   rZ   r+   docr\   s          r
   r'   zUtilityRegistration.__init__  s0      	"	r   c                     d                     | j        j        | j        t	          | j        dd           | j        t	          | j        dt          | j                            | j	        | j
                  S )Nz"{}({!r}, {}, {!r}, {}, {!r}, {!r})r7   )formatrs   r7   r  getattrrO   rZ   r+   reprr\   r[   rt   s    r
   ru   zUtilityRegistration.__repr__  s`    3::N#MDM:t44diDNJT^0D0DEEL$)
 
 	
r   c                      t          |           S r   idrt   s    r
   __hash__zUtilityRegistration.__hash__      $xxr   c                 B    t          |           t          |          k    S r   r  r%   others     r
   __eq__zUtilityRegistration.__eq__      DzzT%[[((r   c                 B    t          |           t          |          k    S r   r  r  s     r
   __ne__zUtilityRegistration.__ne__  r  r   c                 B    t          |           t          |          k     S r   r  r  s     r
   __lt__zUtilityRegistration.__lt__      DzzDKK''r   c                 B    t          |           t          |          k    S r   r  r  s     r
   __le__zUtilityRegistration.__le__  r  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   __gt__zUtilityRegistration.__gt__  r"  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   __ge__zUtilityRegistration.__ge__  r  r   r   r7   r8   r9   r'   ru   r  r  r  r!  r$  r&  r(  r   r   r
   r   r     s           
 
 
  ) ) )) ) )( ( () ) )( ( () ) ) ) )r   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )r   c                 `    ||||||f\  | _         | _        | _        | _        | _        | _        d S r   )r  r   rO   rZ   r\   r[   )r%   r  r   rO   rZ   r+   r  s          r
   r'   zAdapterRegistration.__init__  s6     x4C?	t}di	tyyyr   c                 .   d                     | j        j        | j        dd                    d | j        D                       z   dz   t          | j        dd           | j        t          | j	        dt          | j	                            | j                  S )Nz {}({!r}, {}, {}, {!r}, {}, {!r})[, c                     g | ]	}|j         
S r   r7   r    r   s     r
   r"   z0AdapterRegistration.__repr__.<locals>.<listcomp>      ???AQZ???r   ]r7   )r  rs   r7   r  joinr   r  rO   rZ   r\   r  r[   rt   s    r
   ru   zAdapterRegistration.__repr__  s    188N#M$))?????@@@3FDM:t44diDL*d4<.@.@AA49
 
 	
r   c                      t          |           S r   r  rt   s    r
   r  zAdapterRegistration.__hash__  r  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   r  zAdapterRegistration.__eq__  r  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   r  zAdapterRegistration.__ne__  r  r   c                 B    t          |           t          |          k     S r   r  r  s     r
   r!  zAdapterRegistration.__lt__  r"  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   r$  zAdapterRegistration.__le__  r  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   r&  zAdapterRegistration.__gt__  r"  r   c                 B    t          |           t          |          k    S r   r  r  s     r
   r(  zAdapterRegistration.__ge__  r  r   Nr)  r   r   r
   r   r     s        @ @ @

 
 
  ) ) )) ) )( ( () ) )( ( () ) ) ) )r   r   c                       e Zd ZdS )r   N)r7   r8   r9   r   r   r
   r   r     s        Dr   r   c                   4    e Zd Zd Zed             ZdZd ZdS )r   c                 R    |||||f\  | _         | _        | _        | _        | _        d S r   )r  r   rZ   handlerr[   )r%   r  r   rZ   r?  r  s         r
   r'   zHandlerRegistration.__init__  s-    xw3	ty$,			r   c                     | j         S r   )r?  rt   s    r
   r\   zHandlerRegistration.factory  s
    |r   Nc                    d                     | j        j        | j        dd                    d | j        D                       z   dz   | j        t          | j        dt          | j                            | j
                  S )Nz{}({!r}, {}, {!r}, {}, {!r})r-  r.  c                     g | ]	}|j         
S r   r0  r1  s     r
   r"   z0HandlerRegistration.__repr__.<locals>.<listcomp>  r2  r   r3  r7   )r  rs   r7   r  r4  r   rZ   r  r\   r  r[   rt   s    r
   ru   zHandlerRegistration.__repr__  su    -44N#M$))?????@@@3FIDL*d4<.@.@AA49
 
 	
r   )r7   r8   r9   r'   r   r\   rO   ru   r   r   r
   r   r     sT        4 4 4   X H
 
 
 
 
r   r   N)&__doc__collectionsr   
zope.eventr   ImportErrorzope.interface.adapterr   zope.interface.declarationsr   r   r   r   zope.interface.interfacer   zope.interface.interfacesr   r   r   r   r   r   r   r   r   __all__r   r<   r>   r   r   r   r   r   r   r   r   r   r   r   r
   <module>rL     s    # # # # # #!!!!!!!        3 2 2 2 2 2 5 5 5 5 5 5 3 3 3 3 3 3 8 8 8 8 8 8 2 2 2 2 2 2 . . . . . . : : : : : : : : : : : : 1 1 1 1 1 1 : : : : : : 4 4 4 4 4 4 F F F F F F : : : : : : 0 0 0 0 0 0 2 2 2 2 2 2 	" " " " " " " "8  DA DA DA DA DA DA DA DAN [m
 m
 m
 m
 m
 m
 m
 m
`        > !""&) &) &) &) &) &) &) #"&)R !""#) #) #) #) #) #) #) #"#)L 233	 	 	 	 	2 	 	 43	 &''
 
 
 
 
- 
 
 ('
 
 
s    