
    ~(phd                        S r SSKJr   SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  S/r " S S5      rS r " S S5      r\
" \5       " S S5      5       rS rS rS r S r!\
" \5       " S S 5      5       r"\
" \5       " S! S"5      5       r#\" \5       " S# S$\#5      5       r$\" \5       " S% S&\#5      5       r%g'! \ a    S r Nf = f)(zBasic components support
    )defaultdict)notifyc                      g N )argkws     J/var/www/html/venv/lib/python3.13/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                   ,    \ rS rSrS rS rS rS rSrg)_UnhashableComponentCounter2   c                 X    UR                  5        Vs/ s H  o"PM     snU l        g s  snf r   )items_data)self	otherdictitems      r
   __init__$_UnhashableComponentCounter.__init__5   s$    '0'89'8td'89
9s   'c                 @    U R                    H  u  p#X!:X  d  M  Us  $    gNr   r!   )r"   key	componentcounts       r
   __getitem__'_UnhashableComponentCounter.__getitem__9   s#     $

I !+ r   c                     [        U R                  5       H   u  p4US   U:X  d  M  X4U R                  U'     g    U R                  R                  X45        g r(   )	enumerater!   append)r"   r+   r,   idatas        r
   __setitem__'_UnhashableComponentCounter.__setitem__?   sM     ,GAAw)# ) 0

1 - 	

9,-r   c                     [        U R                  5       H  u  p#US   U:X  d  M  U R                  U	   g    [        U5      er(   )r0   r!   KeyError)r"   r+   r2   r3   s       r
   __delitem__'_UnhashableComponentCounter.__delitem__F   s>     ,GAAw)#JJqM - y!!r   r)   N)	__name__
__module____qualname____firstlineno__r%   r-   r4   r8   __static_attributes__r   r   r
   r   r   2   s    :."r   r   c                       [        [        5      $ r   )r   intr   r   r
   _defaultdict_intrA   N   s    sr   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)_UtilityRegistrationsR   c                 d    [        [        5      U l        Xl        X l        U R                  5         g r   )r   rA   _cache
_utilities_utility_registrations%_UtilityRegistrations__populate_cache)r"   	utilitiesutility_registrationss      r
   r%   _UtilityRegistrations.__init__T   s&    !"23#&;#r   c                     [        U R                  R                  5       5       H  u  u  pnUS   nU R                  X5        M      g r(   )iterrH   r    $_UtilityRegistrations__cache_utility)r"   p_r3   r+   s        r
   __populate_cache&_UtilityRegistrations.__populate_cache\   s>    "4#>#>#D#D#FGNVaTQI  . Hr   c                      U R                   U   U==   S-  ss'   g ! [         a5    [        U R                   U   5      =o0R                   U'   X2==   S-  ss'    g f = f)N   )rF   	TypeErrorr   )r"   providedr+   provs       r
   __cache_utility%_UtilityRegistrations.__cache_utilitya   sd    	!KK!),1, 	! ,GH%, D;;x( Oq O	!s    <AAc                 ^    U R                   U   nX   nUS-  nUS:X  a  X	 US:  $ X1U'   US:  $ )NrU   r   )rF   )r"   rW   r+   r,   s       r
   __uncache_utility'_UtilityRegistrations.__uncache_utilityl   sP    ;;x( #
A:# qy #(Yqyr   c                 N     U R                   U   U   S:  $ ! [         a     gf = f)Nr   F)rF   rV   )r"   rW   r+   s      r
   _is_utility_subscribed,_UtilityRegistrations._is_utility_subscribed{   s2    	;;x(3a77 		s    
$$c                     U R                  X5      nX4U4U R                  X4'   U R                  R                  SXU5        U(       d  U R                  R	                  SX5        U R                  X5        g Nr   )r_   rH   rG   register	subscriberO   )r"   rW   namer+   infofactory
subscribeds          r
   registerUtility%_UtilityRegistrations.registerUtility   so    00E
 W$ 	##	
 	  XY?OO%%b(>X1r   c                     U R                   X4	 U R                  R                  SX5        U R                  X5      nU(       d  U R                  R	                  SX5        g g rb   )rH   rG   
unregister&_UtilityRegistrations__uncache_utilityunsubscribe)r"   rW   re   r+   rh   s        r
   unregisterUtility'_UtilityRegistrations.unregisterUtility   sS    ''(89""2x6++H@
OO''H@ r   )rF   rG   rH   N)r:   r;   r<   r=   r%   rI   rO   rm   r_   ri   ro   r>   r   r   r
   rC   rC   R   s&     /
	!2Ar   rC   c                   h  ^  \ rS rSrSrS&S jrS rU 4S jrS rS r	\
S 5       rS	 rS
 r\
" S S 5      r  S'S jr  S(S jrS rS)S jrS*S jrS rS r  S+S jr  S,S jrS rS)S jrS*S jr  S)S jrS*S jrS r   S+S jrS r S,S jr S r!   S-S  jr"S! r#S.S" jr$S# r%S/S$ jr&S%r'U =r($ )0r      Nc                     [        U[        5      (       d   eXl        U R                  5         U R	                  5         [        U5      U l        S U l        g r   )
isinstancestrr:   _init_registries_init_registrationstuple	__bases___v_utility_registrations_cache)r"   re   basess      r
   r%   Components.__init__   sG     $$$$$  "u.2+r   c                 P    SU R                   R                   SU R                   S3$ )N< >)	__class__r:   r"   s    r
   __repr__Components.__repr__   s&    4>>**+1T]]O1==r   c                    > [         TU ]  5       nUS   R                  5        VVs0 s H  u  p#UR                  S5      (       a  M  X#_M!     nnn[	        U5      nXAS'   [        U5      $ s  snnf )N   _v_)super
__reduce__r    
startswithlistrx   )r"   	reductionkvfiltered_stater   s        r
   r   Components.__reduce__   sp    
 G&(	 ,5Q<+=+=+? 6+?41!"e!4 !$+? 6O	%!Y	6s   A)A)c                 @    [        5       U l        [        5       U l        g r   )r   adaptersrJ   r   s    r
   rv   Components._init_registries   s     ()(*r   c                 <    0 U l         0 U l        / U l        / U l        g r   )rH   _adapter_registrations_subscription_registrations_handler_registrationsr   s    r
   rw   Components._init_registrations   s"    &(#&(#+-(&(#r   c                     U R                   nUb2  UR                  U R                  Ld  UR                  U R                  La&  [	        U R                  U R                  5      =ol         U$ r   )rz   rG   rJ   rH   rC   )r"   caches     r
   _utility_registrations_cache'Components._utility_registrations_cache   sd     33MDNN2((0K0KK &NND$?$?E7
 r   c                 :    U R                   R                  SS5      $ )Nry   r   )__dict__getr   s    r
   	_getBasesComponents._getBases   s    }}  b11r   c                    [        U Vs/ s H  o"R                  PM     sn5      U R                  l        [        U Vs/ s H  o"R                  PM     sn5      U R                  l        [        U5      U R                  S'   g s  snf s  snf )Nry   )rx   r   ry   rJ   r   )r"   r{   bases      r
   	_setBasesComponents._setBases   sr    "'&+)-&+dMMe)- #.#(',*.',tNNu*. $/ %*5\k"	)-*.s
   BBc                 "    U R                  5       $ r   )r   r   s    r
   <lambda>Components.<lambda>   s    T^^%r   c                 $    U R                  U5      $ r   )r   )r"   r{   s     r
   r   r      s    DNN51r   c                    U(       a  U(       a  [        S5      eU" 5       nUc  [        U5      nUS:X  a  [        U5      nU R                  R	                  X#45      nUb   US S X4:X  a  g U R                  US   X#5        U R                  R                  X#XU5        U(       a   [        [        [        XX1XF5      5      5        g g )N$Can't specify factory and component. r   r   )rV   _getUtilityProvided_getNamerH   r   ro   r   ri   r   r   UtilityRegistration)r"   r+   rW   re   rf   eventrg   regs           r
   ri   Components.registerUtility   s     FGG	I*95H2:I&D))--x.>??2Aw9++""3q68:))99IW	6 :#DTD  r   c           
      ^   U(       a  U(       a  [        S5      eU" 5       nUc  Uc  [        S5      e[        U5      nU R                  R                  X#45      nUb  Ub	  XS   :w  a  gUc  US   nU R                  R                  X#U5        [        [        [        XX1/USS  Q76 5      5        g)Nr   z3Must specify one of component, factory and providedr   FrU   T)	rV   r   rH   r   r   ro   r   r   r   )r"   r+   rW   re   rg   olds         r
   ro   Components.unregisterUtility  s     FGG	I  !+ , ,*95H))--x.>?Ki3'q61AI 	));;I	' 	|J#ab'J
 	 r   c              #      #    [        U R                  R                  5       5       H  u  u  pn[        XU/UQ76 v   M     g 7fr   )rN   rH   r    r   )r"   rW   re   r3   s       r
   registeredUtilitiesComponents.registeredUtilities$  s?     t2288:;ht%ddBTBB <s   A Ac                 <    U R                   R                  SXU5      $ rb   )rJ   lookup)r"   rW   re   defaults       r
   queryUtilityComponents.queryUtility)  s    ~~$$RAAr   c                 Z    U R                   R                  SX5      nUc  [        X5      eU$ rb   )rJ   r   r   )r"   rW   re   utilitys       r
   
getUtilityComponents.getUtility,  s-    ..''H;?&x66r   c              #   X   #    U R                   R                  SU5       S h  vN   g  N7frb   )rJ   	lookupAllr"   	interfaces     r
   getUtilitiesForComponents.getUtilitiesFor2  s     >>++B	:::s    *(*c                 :    U R                   R                  SU5      $ rb   )rJ   subscriptionsr   s     r
   getAllUtilitiesRegisteredFor'Components.getAllUtilitiesRegisteredFor5  s    ~~++B	::r   c                    Uc  [        U5      n[        X5      nUS:X  a  [        U5      nX4U R                  X#U4'   U R                  R                  X#XA5        U(       a   [        [        [        XX4X5      5      5        g g Nr   )	_getAdapterProvided_getAdapterRequiredr   r   r   rc   r   r   AdapterRegistrationr"   rg   requiredrW   re   rf   r   s          r
   registerAdapterComponents.registerAdapter8  s    *73H&w92:G$D(/ 	##X$> 	&x4A:#HG  r   c           
      `   Uc  Uc  [        S5      e[        U5      nUc  Uc  [        S5      e[        X5      nU R                  R	                  X#U45      nUb  Ub	  XS   :w  a  gU R                  X#U4	 U R
                  R                  X#U5        [        [        [        XX4/UQ76 5      5        g)N(Must specify one of factory and provided(Must specify one of factory and requiredr   FT)
rV   r   r   r   r   r   rl   r   r   r   )r"   rg   r   rW   re   r   s         r
   unregisterAdapterComponents.unregisterAdapterJ  s      JKK*73H7?FGG&w9))--x4.HIKg1%Q/''T(BC  T:|EE
 	 r   c           	   #      #    [        U R                  R                  5       5       H  u  u  pnu  pE[        XX#XE5      v   M     g 7fr   )rN   r   r    r   )r"   r   rW   re   r+   rf   s         r
   registeredAdaptersComponents.registeredAdaptersd  sF     t2288:;'h$):)%dh&/7 7 <s   AAc                 :    U R                   R                  XX45      $ r   )r   queryAdapter)r"   objectr   re   r   s        r
   r   Components.queryAdapterj  s    }}))&TKKr   c                 \    U R                   R                  XU5      nUc  [        XU5      eU$ r   )r   r   r   )r"   r   r   re   adapters        r
   
getAdapterComponents.getAdapterm  s/    --,,VE?&v$??r   c                 :    U R                   R                  XX45      $ r   )r   queryMultiAdapter)r"   objectsr   re   r   s        r
   r   Components.queryMultiAdapters  s    }}../ 	/r   c                 \    U R                   R                  XU5      nUc  [        XU5      eU$ r   )r   r   r   )r"   r   r   re   r   s        r
   getMultiAdapterComponents.getMultiAdapterx  s/    --11'dK?&w4@@r   c              #      #    U R                   R                  [        [        [        U5      5      U5       H  u  p4U" U6 nUc  M  X54v   M     g 7fr   )r   r   r   mapr   )r"   r   rW   re   rg   r   s         r
   getAdaptersComponents.getAdapters~  sK     !]]44Z)*H
MD w'G"m#
s   ?A
Ac                    U(       a  [        S5      eUc  [        U5      n[        X5      nU R                  R	                  X#XAU45        U R
                  R                  X#U5        U(       a   [        [        [        XX4X5      5      5        g g )N'Named subscribers are not yet supported)
rV   r   r   r   r1   r   rd   r   r   SubscriptionRegistrationr   s          r
   registerSubscriptionAdapter&Components.registerSubscriptionAdapter  s     EFF*73H&w9((//5	
 	G<:(HG  r   c              #   N   #    U R                    H  n[        U /UQ76 v   M     g 7fr   )r   r   r"   r3   s     r
   registeredSubscriptionAdapters)Components.registeredSubscriptionAdapters  s%     44D*47$77 5   #%c                    U(       a  [        S5      eUc  Uc  [        S5      e[        U5      nUc  Uc  [        S5      e[        X5      nUc8  U R                   VVVVV	s/ s H  u  pVpxn	XR:X  a  Xc:X  a  M  XVXxU	4PM     n
nnnnn	O<U R                   VVVVV	s/ s H  u  pVpxn	XR:X  a  Xc:X  a  X:X  a  M  XVXxU	4PM     n
nnnnn	[	        U
5      [	        U R                  5      :X  a  gXR                  S S & U R
                  R                  X#U5        [        [        [        XX4US5      5      5        gs  sn	nnnnf s  sn	nnnnf )Nr   r   r   Fr   T)
rV   r   r   r   lenr   rn   r   r   r   )r"   rg   r   rW   re   rrP   nfr2   news              r
   unregisterSubscriptionAdapter(Components.unregisterSubscriptionAdapter  sP    EFF JKK*73H7?FGG&w9? 666 'aA=Q] #A!?6  C 666 'aA=Q]q| #A!?6   s8s4;;<<.1((+!!(g>|$
 	 1s    D06	D0D93	D9c                 8    U R                   R                  X5      $ r   r   subscribers)r"   r   rW   s      r
   r  Components.subscribers  s    }}((;;r   c                     U(       a  [        S5      e[        X5      nU R                  R                  X#X45        U R                  R                  US U5        U(       a   [        [        [        XX1U5      5      5        g g )Nz$Named handlers are not yet supported)	rV   r   r   r1   r   rd   r   r   HandlerRegistration)r"   rg   r   re   rf   r   s         r
   registerHandlerComponents.registerHandler  st     BCC&w9##**W+	
 	$8:#DD4H  r   c              #   N   #    U R                    H  n[        U /UQ76 v   M     g 7fr   )r   r  r   s     r
   registeredHandlersComponents.registeredHandlers  s%     //D%d2T22 0r   c                 $   U(       a  [        S5      eUc  Uc  [        S5      e[        X5      nUc/  U R                   VVVVs/ s H  u  pEpgXB:w  d  M  XEXg4PM     nnnnnO3U R                   VVVVs/ s H  u  pEpgXB:X  a  Xa:X  a  M  XEXg4PM     nnnnn[        U5      [        U R                  5      :X  a  gXR                  S S & U R                  R                  US U5        [        [        [        XX1S5      5      5        gs  snnnnf s  snnnnf )Nr   r   Fr   T)	rV   r   r   r   r   rn   r   r   r  )	r"   rg   r   re   r   r   r   r2   r   s	            r
   unregisterHandlerComponents.unregisterHandler  s   EFF7?FGG&w9? 111 $am  A!<1  C 111 $a=Q\  A!<1   s8s46677),##A&!!(D':|rB
 	 -s   D
D
2D

D

c                 <    U R                   R                  US 5        g r   r  )r"   r   s     r
   handleComponents.handle  s    !!'40r   c                 r   [        U R                  5      nU R                  nSnSnSnSnSUR                  ;  d   eS Ul        U(       a  UR
                  nUR                  n	OS =p UR                  5        H^  u  u  pu  pnUR                  SX5      U:w  a  U" SXU5        US-  nOUS-  nUR                  SX5      c  US-  nU	" SX5        MY  US-  nM`     U?U(       a  U(       d  U(       a  UR	                  U5        UUUUS.$ ! U?U(       a!  U(       d  U(       a  UR	                  U5        f f f = f)ad  
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                     g r   r   )rQ   s    r
   r   AComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>(  s    $r   c                      g r   r   )argss    r
   r   r  .  s    r   r   rU   )needed_registereddid_not_registerneeded_subscribeddid_not_subscribe)
dictrH   rJ   r   r  rc   rd   r    
registeredrh   )r"   rebuildregsutilsr  r  r  r  rc   rd   rW   re   value_info_factorys                  r
   $rebuildUtilityRegistryFromLocalCache/Components.rebuildUtilityRegistryFromLocalCache  sT   0 D//0 ...&~~HI#55H	%>Bjjl: ":5##B75@R7%*%$)$##B8@%*%b(2%*% ?K -1Be$ "3 0!2!2	
 	
	 -1Be$ 2Cws   )A2D
 
,D6)	ry   r:   r   r   r   rH   rz   r   rJ   )r   r   )NNr   r   TN)NNr   N)r   N)r   )NNr   r   T)NNNr   )Nr   r   T)NNr   )F))r:   r;   r<   r=   rz   r%   r   r   rv   rw   propertyr   r   r   ry   ri   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r%  r>   __classcell__)r   s   @r
   r   r      s%    &*"3> +)   22 %1I
 CE59: EG"&>C
B;; @D04$ )-=?47L :<"&/
$ FJ24*.*8
 @B(T< +/&(""3 D1A
 A
r   c                 <     U R                   $ ! [         a     gf = fr   )__component_name__AttributeError)r+   s    r
   r   r   J  s%    +++ s    
c                 h    [        [        U 5      5      n[        U5      S:X  a  US   $ [        S5      e)NrU   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)r   r   r   rV   )r+   rW   s     r
   r   r   Q  s9    Jy)*H
8}{
	3 r   c                 h    [        [        U 5      5      n[        U5      S:X  a  US   $ [        S5      e)NrU   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)r   r   r   rV   )rg   rW   s     r
   r   r   [  s9    M'*+H
8}{
	3 r   c                    Uc   U R                   nO&[        R                  " U5      (       a  [        S5      e/ nU Hq  nUc  [
        nOS[        R                  " U5      (       d8  [        U[        5      (       a  [        U5      nO[        S[        U5      -  5      eUR                  U5        Ms     [        U5      $ ! [         a    [        S5      ef = f)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+  rV   r   r   r   rt   typer   r1   rx   )rg   r   resultr   s       r
   r   r   e  s    	33H 
	"	"8	,	,1
 	

 F9A**1--!T""!!$57;Aw?  	a  =1  	J 	s   B< <Cc                   N    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rSrg)r   i  Nc                 L    Xl         X l        X0l        X@l        XPl        X`l        g r   )registryrW   re   r+   rf   rg   )r"   r4  rW   re   r+   docrg   s          r
   r%   UtilityRegistration.__init__  s       	"	r   c                 "   SR                  U R                  R                  U R                  [	        U R
                  SS 5      U R                  [	        U R                  S[        U R                  5      5      U R                  U R                  5      $ )Nz"{}({!r}, {}, {!r}, {}, {!r}, {!r})r:   )formatr   r:   r4  getattrrW   re   r+   reprrg   rf   r   s    r
   r   UtilityRegistration.__repr__  se    3::NN##MMDMM:t4diiDNNJT^^0DELL$))
 	
r   c                     [        U 5      $ r   idr   s    r
   __hash__UtilityRegistration.__hash__      $xr   c                 0    [        U 5      [        U5      :H  $ r   r:  r"   others     r
   __eq__UtilityRegistration.__eq__      DzT%[((r   c                 0    [        U 5      [        U5      :g  $ r   rC  rD  s     r
   __ne__UtilityRegistration.__ne__  rH  r   c                 0    [        U 5      [        U5      :  $ r   rC  rD  s     r
   __lt__UtilityRegistration.__lt__      DzDK''r   c                 0    [        U 5      [        U5      :*  $ r   rC  rD  s     r
   __le__UtilityRegistration.__le__  rH  r   c                 0    [        U 5      [        U5      :  $ r   rC  rD  s     r
   __gt__UtilityRegistration.__gt__  rO  r   c                 0    [        U 5      [        U5      :  $ r   rC  rD  s     r
   __ge__UtilityRegistration.__ge__  rH  r   )r+   rg   rf   re   rW   r4  r   r:   r;   r<   r=   r%   r   r?  rF  rJ  rM  rQ  rT  rW  r>   r   r   r
   r   r     s/    
))()()r   r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)r   i  c                 X    XX4XV4u  U l         U l        U l        U l        U l        U l        g r   )r4  r   rW   re   rg   rf   )r"   r4  r   rW   re   r+   r5  s          r
   r%   AdapterRegistration.__init__  s,     ?	t}di	tyr   c                    SR                  U R                  R                  U R                  SSR	                  U R
                   Vs/ s H  oR                  PM     sn5      -   S-   [        U R                  SS 5      U R                  [        U R                  S[        U R                  5      5      U R                  5      $ s  snf )Nz {}({!r}, {}, {}, {!r}, {}, {!r})[, ]r:   )r8  r   r:   r4  joinr   r9  rW   re   rg   r:  rf   r"   r   s     r
   r   AdapterRegistration.__repr__  s    188NN##MM$))?AZZ?@@3FDMM:t4diiDLL*d4<<.@A499
 	
 @s   C c                     [        U 5      $ r   r=  r   s    r
   r?  AdapterRegistration.__hash__  rA  r   c                 0    [        U 5      [        U5      :H  $ r   rC  rD  s     r
   rF  AdapterRegistration.__eq__  rH  r   c                 0    [        U 5      [        U5      :g  $ r   rC  rD  s     r
   rJ  AdapterRegistration.__ne__  rH  r   c                 0    [        U 5      [        U5      :  $ r   rC  rD  s     r
   rM  AdapterRegistration.__lt__  rO  r   c                 0    [        U 5      [        U5      :*  $ r   rC  rD  s     r
   rQ  AdapterRegistration.__le__  rH  r   c                 0    [        U 5      [        U5      :  $ r   rC  rD  s     r
   rT  AdapterRegistration.__gt__  rO  r   c                 0    [        U 5      [        U5      :  $ r   rC  rD  s     r
   rW  AdapterRegistration.__ge__  rH  r   )rg   rf   re   rW   r4  r   NrY  r   r   r
   r   r     s0    @

))()()r   r   c                       \ rS rSrSrg)r   i  r   N)r:   r;   r<   r=   r>   r   r   r
   r   r     s    r   r   c                   4    \ rS rSrS r\S 5       rSrS rSr	g)r  i  c                 L    XX4U4u  U l         U l        U l        U l        U l        g r   )r4  r   re   handlerrf   )r"   r4  r   re   ru  r5  s         r
   r%   HandlerRegistration.__init__  s%    3	ty$,	r   c                     U R                   $ r   )ru  r   s    r
   rg   HandlerRegistration.factory  s    ||r   Nc                 ^   SR                  U R                  R                  U R                  SSR	                  U R
                   Vs/ s H  oR                  PM     sn5      -   S-   U R                  [        U R                  S[        U R                  5      5      U R                  5      $ s  snf )Nz{}({!r}, {}, {!r}, {}, {!r})r^  r_  r`  r:   )r8  r   r:   r4  ra  r   re   r9  rg   r:  rf   rb  s     r
   r   HandlerRegistration.__repr__  s    -44NN##MM$))?AZZ?@@3FIIDLL*d4<<.@A499
 	
 @s   B*)ru  rf   re   r4  r   )
r:   r;   r<   r=   r%   r'  rg   rW   r   r>   r   r   r
   r  r    s'    4   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   rA   rC   r   r   r   r   r   r   r   r   r  r   r   r
   <module>r     s?   #!
 3 5 3 8 2 . : : 1 : 4 F : 0 2 	" "8DA DAN [m
 m
 m
`> !"&) &) #&)R !"#) #) ##)L 23	2 	 4	 &'
- 
 (
M  s   C< <	DD