
    ce                        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dlmZ ddlmZ dgZ G d de          Zd Z G d de          Z  ee
           G d de                      Z!d Z"d Z#d Z$d  Z% ee           G d! d"e                      Z& ee	           G d# d$e                      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     7lib/python3.11/site-packages/zope/interface/registry.pyr   r      s          )ISpecification)ComponentLookupError)IAdapterRegistration)IComponents)IHandlerRegistration) ISubscriptionAdapterRegistration)IUtilityRegistration)
Registered)Unregistered)	Interface)implementedBy)implementer)implementer_only)
providedBy)AdapterRegistry)CLASS_TYPES)STRING_TYPES
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>6   s    999td999r   )items_data)self	otherdicts     r
   __init__z$_UnhashableComponentCounter.__init__4   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__8   s8     $
 	 	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__>   so     ,, 	 	GAtAw)#  )5 0
1 	
9e,-----r   c                     t          | j                  D ]\  }}|d         |k    r| j        |=  d S t          |          r+   )r1   r&   KeyError)r'   r-   r3   r4   s       r
   __delitem__z'_UnhashableComponentCounter.__delitem__E   sU     ,, 	 	GAtAw)# JqM y!!!r   N)__name__
__module____qualname__r)   r/   r5   r8   r   r   r
   r   r   1   sP        : : :  . . ." " " " "r   r   c                  *    t          t                    S r   )r   intr   r   r
   _defaultdict_intr>   L   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__Q   s9    !"233#&;#r   c                     t          | j                                                  D ]&\  \  }}}|d         }|                     ||           'd S r+   )iterrD   r%   $_UtilityRegistrations__cache_utility)r'   p_r4   r-   s        r
   __populate_cachez&_UtilityRegistrations.__populate_cacheY   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   )rB   	TypeErrorr   )r'   providedr-   provs       r
   __cache_utilityz%_UtilityRegistrations.__cache_utility^   s    	!K!),,,1,,,,, 	! 	! 	! ,Gt{S[G\+]+]]D4;x(OOOq OOOOOO		!s    >A! A!c                 `    | j         |         }||         }|dz  }|dk    r||= n|||<   |dk    S )NrO   r   )rB   )r'   rQ   r-   r.   s       r
   __uncache_utilityz'_UtilityRegistrations.__uncache_utilityg   sN    ;x( #
A: 	(##"'HYqyr   c                 T    	 | j         |         |         dk    S # t          $ r Y dS w xY w)Nr   F)rB   rP   )r'   rQ   r-   s      r
   _is_utility_subscribedz,_UtilityRegistrations._is_utility_subscribedv   s@    	;x(3a77 	 	 	55	s    
''c                     |                      ||          }|||f| j        ||f<   | j                            d|||           |s| j                            d||           |                     ||           d S Nr   )rW   rD   rC   register	subscriberJ   )r'   rQ   namer-   infofactory
subscribeds          r
   registerUtilityz%_UtilityRegistrations.registerUtility}   s    009EE
8A48P#Xt$45  XtY??? 	?O%%b(I>>>Xy11111r   c                     | j         ||f= | j                            d||           |                     ||          }|s| j                            d||           d S d S rY   )rD   rC   
unregister&_UtilityRegistrations__uncache_utilityunsubscribe)r'   rQ   r\   r-   r_   s        r
   unregisterUtilityz'_UtilityRegistrations.unregisterUtility   sv    '4(89""2x666++Hi@@
 	AO''Hi@@@@@	A 	Ar   N)
r9   r:   r;   r)   rE   rJ   rc   rW   r`   re   r   r   r
   r@   r@   O   s             / / /
! ! !    	2 	2 	2A A A A Ar   r@   c                   L    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   )
isinstancer   r9   _init_registries_init_registrationstuple	__bases___v_utility_registrations_cache)r'   r\   basess      r
   r)   zComponents.__init__   s`     $-----  """u.2+++r   c                 2    d| j         j        d| j        dS )N< >)	__class__r9   r'   s    r
   __repr__zComponents.__repr__   s       N333T]]]CCr   c                     t          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      )superr   
__reduce__r%   listrl   )r'   	reductionfiltered_statert   s      r
   r   zComponents.__reduce__   so    
 *d++6688	6 69Q<+=+=+?+? 6 6 6OO	%	!Yr   c                 R    t                      | _        t                      | _        d S r   )r   adaptersrF   ru   s    r
   rj   zComponents._init_registries   s"     ())(**r   c                 >    i | _         i | _        g | _        g | _        d S r   )rD   _adapter_registrations_subscription_registrations_handler_registrationsru   s    r
   rk   zComponents._init_registrations   s(    &(#&(#+-(&(###r   c                     | j         }||j        | j        us|j        | j        ur!t	          | j        | j                  x}| _         |S r   )rn   rC   rF   rD   r@   )r'   caches     r
   _utility_registrations_cachez'Components._utility_registrations_cache   sg     3 	-t~5	-+43NN	- ;P+;- ;- -ED7 r   c                 8    | j                             dd          S )Nrm   r   )__dict__getru   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   )rF   r   s     r
   r$   z(Components._setBases.<locals>.<listcomp>   s'     *. *. *.#DN*. *. *.r   rm   )rl   r   rm   rF   r   r'   ro   s     r
   	_setBaseszComponents._setBases   sz    "' )- )-&+)- )- )- #. #.#( *. *.',*. *. *. $/ $/ %*5\\k"""r   c                 *    |                                  S r   )r   ru   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.rg   r~   r   )rP   _getUtilityProvided_getNamerD   r   re   r   r`   r   r   UtilityRegistration)r'   r-   rQ   r\   r]   eventr^   regs           r
   r`   zComponents.registerUtility   s5    	" H FGGG		I 	6*955H3; 	'I&&D)--x.>?? 	;2A2w9d++ ""3q68T:::)99dItW	6 	6 	6  	:#D(D)T$+- -      	 	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   FrO   T)	rP   r   rD   r   r   re   r   r   r   )r'   r-   rQ   r\   r^   olds         r
   re   zComponents.unregisterUtility   s    	" H FGGG		I 	6 , !+ , , ,*955H)--x.>?? 	i 	'3q6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   )rI   rD   r%   r   )r'   rQ   r\   r4   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 rY   )rF   lookup)r'   rQ   r\   defaults       r
   queryUtilityzComponents.queryUtility  s    ~$$R4AAAr   c                 b    | j                             d||          }|t          ||          |S rY   )rF   r   r   )r'   rQ   r\   utilitys       r
   
getUtilityzComponents.getUtility!  s8    .''Hd;; 	7&x666r   c              #   X   K   | j                             d|          D ]\  }}||fV  d S rY   )rF   	lookupAll)r'   	interfacer\   r   s       r
   getUtilitiesForzComponents.getUtilitiesFor'  sH      !^55b)DD 	  	 MD'-	  	 r   c                 8    | j                             d|          S rY   )rF   subscriptions)r'   r   s     r
   getAllUtilitiesRegisteredForz'Components.getAllUtilitiesRegisteredFor+  s    ~++B	:::r   c                 .   |t          |          }t          ||          }|dk    rt          |          }||f| j        |||f<   | j                            ||||           |r0t          t          t          | |||||                               d S d S Nrg   )	_getAdapterProvided_getAdapterRequiredr   r   r   rZ   r   r   AdapterRegistrationr'   r^   requiredrQ   r\   r]   r   s          r
   registerAdapterzComponents.registerAdapter.  s     	4*733H&w993; 	%G$$D(/ 	#Xx$> 	&x4AAA 	:#D(Hd$+T3 3      	 	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)
rP   r   r   r   r   r   rb   r   r   r   )r'   r^   r   rQ   r\   r   s         r
   unregisterAdapterzComponents.unregisterAdapter@  s     	4 L JKKK*733H 	H7 	HFGGG&w99)--x4.HII 	g 	%Q/	5'8T(BC  8T:::|h$ &!$& & &  	 	 	
 tr   c           	   #      K   t          | j                                                  D ]"\  \  }}}\  }}t          | |||||          V  #d S r   )rI   r   r%   r   )r'   r   rQ   r\   r-   r]   s         r
   registeredAdapterszComponents.registeredAdapters[  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   r\   r   s        r
   r   zComponents.queryAdaptera  s    }))&)T7KKKr   c                 d    | j                             |||          }|t          |||          |S r   )r   r   r   )r'   r   r   r\   adapters        r
   
getAdapterzComponents.getAdapterd  s;    -,,VYEE 	@&vy$???r   c                 <    | j                             ||||          S r   )r   queryMultiAdapter)r'   objectsr   r\   r   s        r
   r   zComponents.queryMultiAdapterj  s%    }..Yg/ / 	/r   c                 d    | j                             |||          }|t          |||          |S r   )r   r   r   )r'   r   r   r\   r   s        r
   getMultiAdapterzComponents.getMultiAdaptero  s;    -11'9dKK 	A&w	4@@@r   c              #      K   | j                             t          t          t          |                    |          D ]\  }} || }|||fV  d S r   )r   r   r   mapr   )r'   r   rQ   r\   r^   r   s         r
   getAdapterszComponents.getAdaptersu  st      !]44Z))**  	$ 	$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)
rP   r   r   r   r2   r   r[   r   r   SubscriptionRegistrationr   s          r
   registerSubscriptionAdapterz&Components.registerSubscriptionAdapter}  s      	GEFFF 	4*733H&w99(//xw5	 	 	 	(G<<< 	:(x4)0$8 8      	 	r   c              #   <   K   | j         D ]}t          | g|R  V  d S r   )r   r   r'   r4   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"   rrK   nfr3   rQ   r   s         r
   r$   z<Components.unregisterSubscriptionAdapter.<locals>.<listcomp>  sT       &1aA= ./(]Aq!Q?   r   c                 N    g | ]!\  }}}}}|k    r|k    r|k    |||||f"S r   r   )	r"   r   rK   r   r   r3   r^   rQ   r   s	         r
   r$   z<Components.unregisterSubscriptionAdapter.<locals>.<listcomp>  sd       &1aA= ./(] @AG|Aq!Q?   r   Frg   T)
rP   r   r   r   lenr   rd   r   r   r   )r'   r^   r   rQ   r\   news    ```  r
   unregisterSubscriptionAdapterz(Components.unregisterSubscriptionAdapter  s{     	GEFFF 	4 L JKKK*733H 	H7 	HFGGG&w99 	    6  CC     6  C s88s4;<<< 	5 /2(+!!(Hg>>>|$T8Xt%,b2 2  	 	 	
 tr   c                 8    | j                             ||          S r   r   subscribers)r'   r   rQ   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)	rP   r   r   r2   r   r[   r   r   HandlerRegistration)r'   r^   r   r\   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   r3   r   s        r
   r$   z0Components.unregisterHandler.<locals>.<listcomp>  sB       #1a8mAq!Q<   r   c                 >    g | ]\  }}}}|k    r|k    ||||fS r   r   )r"   r   r   r   r3   r^   r   s        r
   r$   z0Components.unregisterHandler.<locals>.<listcomp>  sP       #1a= ./'\Aq!Q<   r   Frg   T)	rP   r   r   r   r   rd   r   r   r   )r'   r^   r   r\   r   s    ``  r
   unregisterHandlerzComponents.unregisterHandler  s8    	GEFFF 	H7 	HFGGG&w99 	   1  CC    1  C s88s46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   )rL   s    r
   r   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>  s    $ r   c                      d S r   r   )argss    r
   r   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>$  s     r   r   rO   N)needed_registereddid_not_registerneeded_subscribeddid_not_subscribe)
dictrD   rF   r   r   rZ   r[   r%   
registeredr_   )r'   rebuildregsutilsr   r   r   r   rZ   r[   rQ   r\   value_info_factorys                  r
   $rebuildUtilityRegistryFromLocalCachez/Components.rebuildUtilityRegistryFromLocalCache  s   . 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)rg   r   )NNrg   rg   TN)NNrg   N)rg   N)rg   )NNrg   rg   T)NNNrg   )Nrg   rg   T)NNrg   )F)'r9   r:   r;   rn   r)   rv   r   rj   rk   propertyr   r   r   rm   r`   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rt   s   @r
   r   r      s        &*"3 3 3 3D D D         + + +) ) ) 
 
 X
2 2 22 2 2 %%11
 
I
 CF6:   : EH"&   >C C C
B B B B        ; ; ; @D26   $ )-=@   67 7 7L L L L    :="&/ / / /
   $ $ $ FJ36*.   (8 8 8 59=@( ( ( (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   ?  s2    ++   sss   	 
c                     t          t          |                     }t          |          dk    r|d         S t          d          )NrO   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)r   r   r   rP   )r-   rQ   s     r
   r   r   E  sK    Jy))**H
8}} {
	34 4 4r   c                     t          t          |                     }t          |          dk    r|d         S t          d          )NrO   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)r   r   r   rP   )r^   rQ   s     r
   r   r   M  sK    M'**++H
8}} {
	34 4 4r   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  rP   r   r   r   ri   r   r   typer2   rl   )r^   r   resultr   s       r
   r   r   U  s    
>	3HH 	 	 	J  	
 
	"8	,	, > = > > 	> F 
 
 	"AA*1-- 	"![)) "!!$$ !ACG77!K " " " 	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                 `    ||||||f\  | _         | _        | _        | _        | _        | _        d S r   )registryrQ   r\   r-   r]   r^   )r'   r  rQ   r\   r-   docr^   s          r
   r)   zUtilityRegistration.__init__t  s6     xy#w>	ty$.$)	r   c                     | j         j        d| j        dt          | j        dd           d| j        dt          | j        dt          | j                            d| j        d| j	        dS )N(, r9   ))
rt   r9   r  getattrrQ   r\   r-   reprr^   r]   ru   s    r
   rv   zUtilityRegistration.__repr__y  st    '''z48888$)))
D4H4HIIIIdiii 	r   c                      t          |           S r   idru   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   r9   r:   r;   r)   rv   r  r  r!  r#  r&  r(  r*  r   r   r
   r   r   q  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   rQ   r\   r^   r]   )r'   r  r   rQ   r\   r-   r  s          r
   r)   zAdapterRegistration.__init__  s6     x4C?	t}di	tyyyr   c                 &   | j         j        d| j        ddd                    d | j        D                       z   dz   dt          | j        dd           d| j        dt          | j        dt          | j                            d| j
        dS )Nr  r  [c                     g | ]	}|j         
S r   r9   r"   r   s     r
   r$   z0AdapterRegistration.__repr__.<locals>.<listcomp>      ???AQZ???r   ]r9   r  )rt   r9   r  joinr   r  rQ   r\   r^   r  r]   ru   s    r
   rv   zAdapterRegistration.__repr__  s    N###MMM$))?????@@@3FFFDM:t4444diiiDL*d4<.@.@AAAA4999 	r   c                      t          |           S r   r  ru   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)r9   r:   r;   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   r\   handlerr]   )r'   r  r   r\   r@  r  s         r
   r)   zHandlerRegistration.__init__  s-    xw3	ty$,			r   c                     | j         S r   )r@  ru   s    r
   r^   zHandlerRegistration.factory  s
    |r   Nc                     | j         j        d| j        ddd                    d | j        D                       z   dz   d| j        dt          | j        dt          | j                            d| j	        dS )Nr  r  r/  c                     g | ]	}|j         
S r   r1  r2  s     r
   r$   z0HandlerRegistration.__repr__.<locals>.<listcomp>  r3  r   r4  r9   r  )
rt   r9   r  r5  r   r\   r  r^   r  r]   ru   s    r
   rv   zHandlerRegistration.__repr__  s    N###MMM$))?????@@@3FFFIIIDL*d4<.@.@AAAA4999 	r   )r9   r:   r;   r)   r   r^   rQ   rv   r   r   r
   r   r     sT        4 4 4   X H    r   r   N)*__doc__collectionsr   
zope.eventr   ImportErrorzope.interface.interfacesr   r   r   r   r   r   r   r   r   zope.interface.interfacer   zope.interface.declarationsr   r   r   r   zope.interface.adapterr   zope.interface._compatr   r   __all__r   r   r>   r@   r   r   r   r   r   r   r   r   r   r   r   r
   <module>rN     s    # # # # # #!!!!!!!! ! ! !     ! 5 4 4 4 4 4 : : : : : : : : : : : : 1 1 1 1 1 1 : : : : : : F F F F F F : : : : : : 0 0 0 0 0 0 2 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 2 2 2 2 2 2 . . . . . . / / / / / / 	" " " " "& " " "6  @A @A @A @A @AF @A @A @AF [j
 j
 j
 j
 j
 j
 j
 j
X  4 4 44 4 4  8 !""#) #) #) #) #)& #) #) #"#)J !""#) #) #) #) #)& #) #) #"#)J 233	 	 	 	 	2 	 	 43	 &''    -   ('  s    