Ë
    š”eäd  ã                   ó  — d 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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%y'# e$ r d„ ZY Œöw xY w)(zBasic components support
é    )Údefaultdict)Únotifyc                   ó   — y ©N© )ÚargÚkws     ú9/usr/lib/python3/dist-packages/zope/interface/registry.pyr   r      ó   � ó    )ÚISpecification)ÚComponentLookupError)ÚIAdapterRegistration)ÚIComponents)ÚIHandlerRegistration)Ú ISubscriptionAdapterRegistration)ÚIUtilityRegistration)Ú
Registered)ÚUnregistered)Ú	Interface)ÚimplementedBy)Úimplementer)Úimplementer_only)Ú
providedBy)ÚAdapterRegistryÚ
Componentsc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú_UnhashableComponentCounterc                 óT   — |j                  «       D �cg c]  }|‘Œ c}| _        y c c}w r   )ÚitemsÚ_data)ÚselfÚ	otherdictÚitems      r
   Ú__init__z$_UnhashableComponentCounter.__init__2   s   € à'0§¡Ó'8Ö9˜t’dÒ9ˆ�
ùÒ9s   “	%c                 ó>   — | j                   D ]  \  }}||k(  sŒ|c S  y©Nr   )r!   )r"   ÚkeyÚ	componentÚcounts       r
   Ú__getitem__z'_UnhashableComponentCounter.__getitem__6   s,   € Ø $§
¡
ò 	ÑˆI�uØ˜CÓØ’ð	ð r   c                 ó®   — t        | j                  «      D ]   \  }}|d   |k(  sŒ||f| j                  |<    y  | j                  j                  ||f«       y r'   )Ú	enumerater!   Úappend)r"   r)   r*   ÚiÚdatas        r
   Ú__setitem__z'_UnhashableComponentCounter.__setitem__<   sX   € Ü  §¡Ó,ò 	‰GˆAˆtØ�A‰w˜)Ó#Ø )¨5Ð 0�—
‘
˜1‘Ùð	ð 	�
‰
×Ñ˜9 eÐ,Õ-r   c                 ó€   — t        | j                  «      D ]  \  }}|d   |k(  sŒ| j                  |=  y  t        |«      ‚r'   )r-   r!   ÚKeyError)r"   r)   r/   r0   s       r
   Ú__delitem__z'_UnhashableComponentCounter.__delitem__C   sE   € Ü  §¡Ó,ò 	‰GˆAˆtØ�A‰w˜)Ó#Ø—J‘J˜q�MÙð	ô �yÓ!Ð!r   N)Ú__name__Ú
__module__Ú__qualname__r%   r+   r1   r4   r   r   r
   r   r   /   s   „ ò:òò.ó"r   r   c                  ó    — t        t        «      S r   )r   Úintr   r   r
   Ú_defaultdict_intr:   J   s   € Ü”sÓÐr   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú_UtilityRegistrationsc                 óh   — t        t        «      | _        || _        || _        | j                  «        y r   )r   r:   Ú_cacheÚ
_utilitiesÚ_utility_registrationsÚ%_UtilityRegistrations__populate_cache)r"   Ú	utilitiesÚutility_registrationss      r
   r%   z_UtilityRegistrations.__init__O   s*   € ä!Ô"2Ó3ˆŒØ#ˆŒØ&;ˆÔ#à×ÑÕr   c                 óŽ   — t        | j                  j                  «       «      D ]  \  \  }}}|d   }| j                  ||«       Œ! y r'   )Úiterr@   r    Ú$_UtilityRegistrations__cache_utility)r"   ÚpÚ_r0   r)   s        r
   Ú__populate_cachez&_UtilityRegistrations.__populate_cacheW   sF   € Ü" 4×#>Ñ#>×#DÑ#DÓ#FÓGò 	/‰N‰Vˆa��TØ˜Q™ˆIØ× Ñ   IÕ.ñ	/r   c                 óÀ   — 	 | j                   |   |xx   dz  cc<   y # t        $ r7 t        | j                   |   «      x}| j                   |<   ||xx   dz  cc<   Y y w xY w)Né   )r>   Ú	TypeErrorr   )r"   Úprovidedr)   Úprovs       r
   Ú__cache_utilityz%_UtilityRegistrations.__cache_utility\   sb   € ð	!Ø�K‰K˜Ñ! )Ó,°Ñ1Ô,øÜò 	!ô ,GÀtÇ{Á{ÐS[ÑG\Ó+]Ð]ˆD�4—;‘;˜xÑ(Ø�‹O˜qÑ �Oð		!ús   ‚ �=AÁAc                 ób   — | j                   |   }||   }|dz  }|dk(  r||= |dkD  S |||<   |dkD  S )NrK   r   )r>   )r"   rM   r)   r*   s       r
   Ú__uncache_utilityz'_UtilityRegistrations.__uncache_utilitye   sV   € Ø—;‘;˜xÑ(ˆð ˜Ñ#ˆØ�‰
ˆØ�AŠ:Ø˜Ð#ð �q‰yÐð #(ˆH�YÑØ�q‰yÐr   c                 óL   — 	 | j                   |   |   dkD  S # t        $ r Y yw xY w)Nr   F)r>   rL   )r"   rM   r)   s      r
   Ú_is_utility_subscribedz,_UtilityRegistrations._is_utility_subscribedt   s2   € ð	Ø—;‘;˜xÑ(¨Ñ3°aÑ7Ð7øÜò 	áð	ús   ‚ —	#¢#c                 óî   — | j                  ||«      }|||f| j                  ||f<   | j                  j                  d|||«       |s| j                  j	                  d||«       | j                  ||«       y ©Nr   )rS   r@   r?   ÚregisterÚ	subscriberF   )r"   rM   Únamer)   ÚinfoÚfactoryÚ
subscribeds          r
   ÚregisterUtilityz%_UtilityRegistrations.registerUtility{   sq   € Ø×0Ñ0°¸9ÓEˆ
à8AÀ4ÈÐ8Pˆ×#Ñ# X¨tÐ$4Ñ5Ø�‰× Ñ   X¨t°YÔ?áØ�O‰O×%Ñ% b¨(°IÔ>à×Ñ˜X yÕ1r   c                 óÀ   — | j                   ||f= | j                  j                  d||«       | j                  ||«      }|s| j                  j	                  d||«       y y rU   )r@   r?   Ú
unregisterÚ&_UtilityRegistrations__uncache_utilityÚunsubscribe)r"   rM   rX   r)   r[   s        r
   ÚunregisterUtilityz'_UtilityRegistrations.unregisterUtility†   s[   € Ø×'Ñ'¨°4Ð(8Ð9Ø�‰×"Ñ" 2 x°Ô6à×+Ñ+¨H°iÓ@ˆ
áØ�O‰O×'Ñ'¨¨H°iÕ@ð r   N)
r5   r6   r7   r%   rA   rF   r_   rS   r\   ra   r   r   r
   r<   r<   M   s&   „ ò ò/ò
!òòò	2óAr   r<   c                   ó@  ‡ — 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"d,d!„Z#d"„ Z$d-d#„Z%ˆ xZ&S ).r   Nc                 ó¤   — t        |t        «      sJ ‚|| _        | j                  «        | j	                  «        t        |«      | _        d | _        y r   )Ú
isinstanceÚstrr5   Ú_init_registriesÚ_init_registrationsÚtupleÚ	__bases__Ú_v_utility_registrations_cache)r"   rX   Úbasess      r
   r%   zComponents.__init__•   sF   € ô ˜$¤Ô$Ð$Ð$ØˆŒØ×ÑÔØ× Ñ Ô"Ü˜u›ˆŒØ.2ˆÕ+r   c                 ób   — dj                  | j                  j                  | j                  «      S )Nz<{} {}>)ÚformatÚ	__class__r5   ©r"   s    r
   Ú__repr__zComponents.__repr__Ÿ   s#   € Ø×Ñ §¡× 7Ñ 7¸¿¹ÓGÐGr   c                 óÐ   •— t         ‰| �  «       }|d   j                  «       D ��ci c]  \  }}|j                  d«      s||“Œ }}}t	        |«      }||d<   t        |«      S c c}}w )Né   Ú_v_)ÚsuperÚ
__reduce__r    Ú
startswithÚlistrh   )r"   Ú	reductionÚkÚvÚfiltered_statern   s        €r
   ru   zComponents.__reduce__¢   ss   ø€ ô
 ‘GÑ&Ó(ˆ	ð ,5°Q©<×+=Ñ+=Ó+?÷ 6¡4 1 aØ!"§¡¨eÔ!4ð ˜Q™$ð 6ˆñ 6ä˜“Oˆ	Ø%ˆ	�!‰Ü�YÓÐùó	6s   ¦A"c                 ó@   — t        «       | _        t        «       | _        y r   )r   ÚadaptersrB   ro   s    r
   rf   zComponents._init_registries±   s   € ô (Ó)ˆŒÜ(Ó*ˆ�r   c                 ó<   — i | _         i | _        g | _        g | _        y r   )r@   Ú_adapter_registrationsÚ_subscription_registrationsÚ_handler_registrationsro   s    r
   rg   zComponents._init_registrations·   s"   € Ø&(ˆÔ#Ø&(ˆÔ#Ø+-ˆÔ(Ø&(ˆÕ#r   c                 óÐ   — | j                   }|�0|j                  | j                  us|j                  | j                  ur't	        | j                  | j                  «      x}| _         |S r   )rj   r?   rB   r@   r<   )r"   Úcaches     r
   Ú_utility_registrations_cachez'Components._utility_registrations_cache½   se   € ð ×3Ñ3ˆØˆMØ×Ñ t§~¡~Ñ5Ø×+Ñ+°4×3NÑ3NÑNÜ:OØ—‘Ø×+Ñ+ó;-ð -ˆE�DÔ7ð ˆr   c                 ó:   — | j                   j                  dd«      S )Nri   r   )Ú__dict__Úgetro   s    r
   Ú	_getBaseszComponents._getBasesÊ   s   € à�}‰}× Ñ  ¨bÓ1Ð1r   c                 ó  — t        |D �cg c]  }|j                  ‘Œ c}«      | j                  _        t        |D �cg c]  }|j                  ‘Œ c}«      | j                  _        t        |«      | j                  d<   y c c}w c c}w )Nri   )rh   r}   ri   rB   r†   )r"   rk   Úbases      r
   Ú	_setBaseszComponents._setBasesÎ   sn   € ä"'Ø&+ö)-Ø"ˆD�M‹Mò)-ó #.ˆ�‰Ôä#(Ø',ö*.Ø#ˆD�N‹Nò*.ó $/ˆ�‰Ô ä%*¨5£\ˆ�‰�kÒ"ùò	)-ùò*.s
   ŠA>¼Bc                 ó"   — | j                  «       S r   )rˆ   ro   s    r
   ú<lambda>zComponents.<lambda>×   s   € �T—^‘^Ó%€ r   c                 ó$   — | j                  |«      S r   )r‹   )r"   rk   s     r
   r�   zComponents.<lambda>Ø   s   € ˜DŸN™N¨5Ó1€ r   c                 ór  — |r|rt        d«      ‚ |«       }|€t        |«      }|dk(  rt        |«      }| j                  j	                  ||f«      }|�!|d d ||fk(  ry | j                  |d   ||«       | j                  j                  |||||«       |r#t        t        t        | |||||«      «      «       y y )Nú$Can't specify factory and component.Ú rr   r   )rL   Ú_getUtilityProvidedÚ_getNamer@   r‡   ra   r„   r\   r   r   ÚUtilityRegistration)r"   r)   rM   rX   rY   ÚeventrZ   Úregs           r
   r\   zComponents.registerUtilityÛ   sÕ   € áÙÜÐ FÓGÐGÙ›	ˆIàÐÜ*¨9Ó5ˆHà�2Š:Ü˜IÓ&ˆDà×)Ñ)×-Ñ-¨x¸Ð.>Ó?ˆØˆ?Ø�2�Aˆw˜9 dÐ+Ò+àØ×"Ñ" 3 q¡6¨8°TÔ:à×)Ñ)×9Ñ9Ø�d˜I t¨Wô	6ñ Ü”:Ü# D¨(°D¸)ÀTØ$+ó-óõ ð r   c           
      óH  — |r|rt        d«      ‚ |«       }|€|€t        d«      ‚t        |«      }| j                  j                  ||f«      }|�
|�	||d   k7  ry|€|d   }| j                  j                  |||«       t        t        t        | |||g|dd  ¢­Ž «      «       y)Nr�   z3Must specify one of component, factory and providedr   FrK   T)	rL   r’   r@   r‡   r„   ra   r   r   r”   )r"   r)   rM   rX   rZ   Úolds         r
   ra   zComponents.unregisterUtilityø   sÒ   € áÙÜÐ FÓGÐGÙ›	ˆIàÐØÐ Üð !+ó ,ð ,ä*¨9Ó5ˆHà×)Ñ)×-Ñ-¨x¸Ð.>Ó?ˆØˆK˜iÐ3Ø'¨3¨q©6Ò1ØàÐØ˜A™ˆIð 	×)Ñ)×;Ñ;Ø�d˜Iô	'ô 	Œ|Ü  h°°iÐJÀ#ÀaÀbÀ'ÒJóô 	ð r   c              #   óˆ   K  — t        | j                  j                  «       «      D ]  \  \  }}}t        | ||g|¢­Ž –— Œ y ­wr   )rE   r@   r    r”   )r"   rM   rX   r0   s       r
   ÚregisteredUtilitieszComponents.registeredUtilities  sK   è ø€ ä�t×2Ñ2×8Ñ8Ó:Ó;ò	Cñ Ñˆh˜˜tä% d¨H°dÐB¸TÒBÓBñ	Cùs   ‚A Ac                 ó>   — | j                   j                  d|||«      S rU   )rB   Úlookup)r"   rM   rX   Údefaults       r
   ÚqueryUtilityzComponents.queryUtility  s   € Ø�~‰~×$Ñ$ R¨°4¸ÓAÐAr   c                 ó\   — | j                   j                  d||«      }|€t        ||«      ‚|S rU   )rB   rœ   r   )r"   rM   rX   Úutilitys       r
   Ú
getUtilityzComponents.getUtility  s1   € Ø—.‘.×'Ñ'¨¨H°dÓ;ˆØˆ?Ü& x°Ó6Ð6Øˆr   c              #   óX   K  — | j                   j                  d|«      E d {  –—†  y 7 Œ­wrU   )rB   Ú	lookupAll©r"   Ú	interfaces     r
   ÚgetUtilitiesForzComponents.getUtilitiesFor%  s    è ø€ Ø—>‘>×+Ñ+¨B°	Ó:×:Ò:ús   ‚ *¢(£*c                 ó:   — | j                   j                  d|«      S rU   )rB   Úsubscriptionsr¤   s     r
   ÚgetAllUtilitiesRegisteredForz'Components.getAllUtilitiesRegisteredFor(  s   € Ø�~‰~×+Ñ+¨B°	Ó:Ð:r   c                 ó  — |€t        |«      }t        ||«      }|dk(  rt        |«      }||f| j                  |||f<   | j                  j                  ||||«       |r#t        t        t        | |||||«      «      «       y y ©Nr‘   )	Ú_getAdapterProvidedÚ_getAdapterRequiredr“   r   r}   rV   r   r   ÚAdapterRegistration©r"   rZ   ÚrequiredrM   rX   rY   r•   s          r
   ÚregisterAdapterzComponents.registerAdapter+  s“   € àÐÜ*¨7Ó3ˆHÜ& w°Ó9ˆØ�2Š:Ü˜GÓ$ˆDà(/°¨ð 	×#Ñ# X¨x¸Ð$>ñ 	&à�‰×Ñ˜x¨°4¸ÔAáÜ”:Ü# D¨(°H¸dØ$+¨Tó3óõ ð r   c           
      ó`  — |€|€t        d«      ‚t        |«      }|€|€t        d«      ‚t        ||«      }| j                  j	                  |||f«      }|�
|�	||d   k7  ry| j                  |||f= | j
                  j                  |||«       t        t        t        | |||g|¢­Ž «      «       y)Nú(Must specify one of factory and providedú(Must specify one of factory and requiredr   FT)
rL   r¬   r­   r   r‡   r}   r^   r   r   r®   )r"   rZ   r°   rM   rX   r˜   s         r
   ÚunregisterAdapterzComponents.unregisterAdapter=  sÔ   € ð ÐØˆÜÐ JÓKÐKÜ*¨7Ó3ˆHàÐ 7 ?ÜÐFÓGÐGä& w°Ó9ˆØ×)Ñ)×-Ñ-¨x¸À4Ð.HÓIˆØˆK˜gÐ1Ø%¨¨Q©Ò/Øà×'Ñ'¨°8¸TÐ(BÐCØ�‰× Ñ  ¨8°TÔ:äŒ|Ü  h°¸$ð &Ø!$ò&óô 	ð
 r   c           	   #   ó”   K  — t        | j                  j                  «       «      D ]  \  \  }}}\  }}t        | |||||«      –— Œ  y ­wr   )rE   r   r    r®   )r"   r°   rM   rX   r)   rY   s         r
   ÚregisteredAdapterszComponents.registeredAdaptersX  sV   è ø€ ä�t×2Ñ2×8Ñ8Ó:Ó;ò	7ñ Ñ'ˆh˜ $Ñ):¨)°Tä% d¨H°hÀØ&/°ó7ó 7ñ	7ùs   ‚AAc                 ó>   — | j                   j                  ||||«      S r   )r}   ÚqueryAdapter)r"   Úobjectr¥   rX   r�   s        r
   r¹   zComponents.queryAdapter^  s   € Ø�}‰}×)Ñ)¨&°)¸TÀ7ÓKÐKr   c                 ó^   — | j                   j                  |||«      }|€t        |||«      ‚|S r   )r}   r¹   r   )r"   rº   r¥   rX   Úadapters        r
   Ú
getAdapterzComponents.getAdaptera  s3   € Ø—-‘-×,Ñ,¨V°YÀÓEˆØˆ?Ü& v¨y¸$Ó?Ð?Øˆr   c                 ó>   — | j                   j                  ||||«      S r   )r}   ÚqueryMultiAdapter)r"   Úobjectsr¥   rX   r�   s        r
   r¿   zComponents.queryMultiAdapterg  s"   € à�}‰}×.Ñ.Ø�Y  gó/ð 	/r   c                 ó^   — | j                   j                  |||«      }|€t        |||«      ‚|S r   )r}   r¿   r   )r"   rÀ   r¥   rX   r¼   s        r
   ÚgetMultiAdapterzComponents.getMultiAdapterl  s3   € Ø—-‘-×1Ñ1°'¸9ÀdÓKˆØˆ?Ü& w°	¸4Ó@Ð@Øˆr   c              #   óž   K  — | j                   j                  t        t        t        |«      «      |«      D ]  \  }} ||Ž }|€Œ||f–— Œ y ­wr   )r}   r£   rw   Úmapr   )r"   rÀ   rM   rX   rZ   r¼   s         r
   ÚgetAdapterszComponents.getAdaptersr  sV   è ø€ Ø!Ÿ]™]×4Ñ4Ü””Z Ó)Ó*Øóò 	$‰MˆD�'ñ ˜wÐ'ˆGØÑ"Ø˜G�mÓ#ñ	$ùs   ‚AAÁ	Ac                 ó  — |rt        d«      ‚|€t        |«      }t        ||«      }| j                  j	                  |||||f«       | j
                  j                  |||«       |r#t        t        t        | |||||«      «      «       y y )Nú'Named subscribers are not yet supported)
rL   r¬   r­   r€   r.   r}   rW   r   r   ÚSubscriptionRegistrationr¯   s          r
   ÚregisterSubscriptionAdapterz&Components.registerSubscriptionAdapterz  s•   € ñ ÜÐEÓFÐFØÐÜ*¨7Ó3ˆHÜ& w°Ó9ˆØ×(Ñ(×/Ñ/Ø�x  w°Ð5ô	ð 	�‰×Ñ ¨(°GÔ<áÜ”:Ü(¨¨x¸À4Ø)0°$ó8óõ ð r   c              #   óJ   K  — | j                   D ]  }t        | g|¢­Ž –— Œ y ­wr   )r€   rÈ   ©r"   r0   s     r
   ÚregisteredSubscriptionAdaptersz)Components.registeredSubscriptionAdaptersŽ  s+   è ø€ Ø×4Ñ4ò 	8ˆDÜ*¨4Ð7°$Ò7Ó7ñ	8ùó   ‚!#c                 ót  — |rt        d«      ‚|€|€t        d«      ‚t        |«      }|€|€t        d«      ‚t        ||«      }|€7| j                  D �����	cg c]  \  }}}}}	||k(  r||k(  s|||||	f‘Œ }
}}}}}	n;| j                  D �����	cg c]  \  }}}}}	||k(  r
||k(  r||k(  s|||||	f‘Œ  }
}}}}}	t	        |
«      t	        | j                  «      k(  ry|
| j                  d d  | j
                  j                  |||«       t        t        t        | ||||d«      «      «       yc c}	}}}}w c c}	}}}}w )NrÇ   r³   r´   Fr‘   T)
rL   r¬   r­   r€   Úlenr}   r`   r   r   rÈ   )r"   rZ   r°   rM   rX   ÚrrG   ÚnÚfr/   Únews              r
   ÚunregisterSubscriptionAdapterz(Components.unregisterSubscriptionAdapter’  sn  € ñ ÜÐEÓFÐFØÐØˆÜÐ JÓKÐKÜ*¨7Ó3ˆHàÐ 7 ?ÜÐFÓGÐGä& w°Ó9ˆàˆ?ð ×6Ñ6÷ò Ù&˜˜1˜a  Aà š=¨Q°(ª]ð �q˜!˜Q ’?ð ˆCõ ð ×6Ñ6÷ò Ù&˜˜1˜a  Aà š=¨Q°(ª]¸qÀGº|ð �q˜!˜Q ’?ð ˆCô ô ˆs‹8”s˜4×;Ñ;Ó<Ò<Øð /2ˆ×(Ñ(©Ð+Ø�‰×!Ñ! (¨H°gÔ>äŒ|Ü$ T¨8°X¸tØ%,¨bó2óô 	ð
 ùö1ùös   ÁD(Â#D1c                 ó:   — | j                   j                  ||«      S r   ©r}   Úsubscribers)r"   rÀ   rM   s      r
   r×   zComponents.subscribers¼  s   € Ø�}‰}×(Ñ(¨°(Ó;Ð;r   c                 óö   — |rt        d«      ‚t        ||«      }| j                  j                  ||||f«       | j                  j                  |d |«       |r"t        t        t        | ||||«      «      «       y y )Nz$Named handlers are not yet supported)	rL   r­   r�   r.   r}   rW   r   r   ÚHandlerRegistration)r"   rZ   r°   rX   rY   r•   s         r
   ÚregisterHandlerzComponents.registerHandler¿  s~   € ñ ÜÐBÓCÐCÜ& w°Ó9ˆØ×#Ñ#×*Ñ*Ø�t˜W dÐ+ô	ð 	�‰×Ñ ¨$°Ô8áÜ”:Ü# D¨(°D¸'À4ÓHóõ ð r   c              #   óJ   K  — | j                   D ]  }t        | g|¢­Ž –— Œ y ­wr   )r�   rÙ   rË   s     r
   ÚregisteredHandlerszComponents.registeredHandlersÐ  s+   è ø€ Ø×/Ñ/ò 	3ˆDÜ% dÐ2¨TÒ2Ó2ñ	3ùrÍ   c                 ó  — |rt        d«      ‚|€|€t        d«      ‚t        ||«      }|€.| j                  D ����cg c]  \  }}}}||k7  r||||f‘Œ }}}}}n2| j                  D ����cg c]  \  }}}}||k(  r||k(  s||||f‘Œ }}}}}t        |«      t        | j                  «      k(  ry|| j                  d d  | j                  j                  |d |«       t        t        t        | |||d«      «      «       yc c}}}}w c c}}}}w )NrÇ   r´   Fr‘   T)	rL   r­   r�   rÏ   r}   r`   r   r   rÙ   )	r"   rZ   r°   rX   rÐ   rÑ   rÒ   r/   rÓ   s	            r
   ÚunregisterHandlerzComponents.unregisterHandlerÔ  s0  € ÙÜÐEÓFÐFàÐ 7 ?ÜÐFÓGÐGä& w°Ó9ˆàˆ?ð ×1Ñ1÷ñ Ù#˜˜1˜a à˜8’mð �q˜!˜Q’<ð ˆCô ð ×1Ñ1÷ñ Ù#˜˜1˜a à š=¨Q°'ª\ð �q˜!˜Q’<ð ˆCó ô ˆs‹8”s˜4×6Ñ6Ó7Ò7Øà),ˆ×#Ñ#¡AÐ&Ø�‰×!Ñ! (¨D°'Ô:äŒ|Ü  h°°g¸rÓBóô 	ð ùõ-ùõs   ¼C;
Á*D
c                 ó<   — | j                   j                  |d «       y r   rÖ   )r"   rÀ   s     r
   ÚhandlezComponents.handleö  s   € Ø�‰×!Ñ! '¨4Õ0r   c                 ó0  — t        | j                  «      }| j                  }d}d}d}d}d|j                  vsJ ‚d„ |_        |r|j
                  }|j                  }	nd„ x}}		 |j                  «       D ]`  \  \  }
}\  }}}|j                  d|
|«      |k7  r |d|
||«       |dz  }n|dz  }|j                  d|
|«      €|dz  } |	d|
|«       Œ\|dz  }Œb 	 |`|r|s|r|j	                  |«       	 ||||dœS # |`|r|s|r|j	                  |«       w w w xY w)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                  ó   — y r   r   )rH   s    r
   r�   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>  r   r   c                   ó   — y r   r   )Úargss    r
   r�   zAComponents.rebuildUtilityRegistryFromLocalCache.<locals>.<lambda>!  r   r   r   rK   )Úneeded_registeredÚdid_not_registerÚneeded_subscribedÚdid_not_subscribe)
Údictr@   rB   r†   râ   rV   rW   r    Ú
registeredr[   )r"   ÚrebuildÚregsÚutilsræ   rç   rè   ré   rV   rW   rM   rX   ÚvalueÚ_infoÚ_factorys                  r
   Ú$rebuildUtilityRegistryFromLocalCachez/Components.rebuildUtilityRegistryFromLocalCacheù  sf  € ô. �D×/Ñ/Ó0ˆØ—‘ˆØÐØÐØÐØÐð
  §¡Ñ.Ð.Ð.Ù&ˆŒáØ—~‘~ˆHØŸ™‰Iá#5Ð5ˆH�yð	%Ø>B¿j¹j»lò +Ñ:Ñ �˜4Ñ": 5¨%°Ø×#Ñ# B¨°$Ó7¸5Ò@Ù˜R ¨4°Ô7Ø%¨Ñ*Ñ%à$¨Ñ)Ð$à×#Ñ# B¨°%Ó8Ð@Ø%¨Ñ*Ð%Ù˜b (¨EÕ2à%¨Ñ*Ñ%ñ+ð �ÙÑ-Ñ1BØ—‘˜eÕ$ð "3Ø 0Ø!2Ø!2ñ	
ð 	
øð	 �ÙÑ-Ñ1BØ—‘˜eÕ$ð 2Cˆwús   Á#A3C8 Ã8D)r‘   r   )NNr‘   r‘   TN)NNr‘   N)r‘   N)r‘   )NNr‘   r‘   T)NNNr‘   )Nr‘   r‘   T)NNr‘   )F)'r5   r6   r7   rj   r%   rp   ru   rf   rg   Úpropertyr„   rˆ   r‹   ri   r\   ra   rš   rž   r¡   r¦   r©   r±   rµ   r·   r¹   r½   r¿   rÂ   rÅ   rÉ   rÌ   rÔ   r×   rÚ   rÜ   rÞ   rà   rò   Ú__classcell__)rn   s   @r
   r   r   �   s!  ø„ ð &*Ð"ó3òHô ò+ò)ð ñ
ó ð
ò2ò2ñ Ù%Ù1ó
€Ið
 CEØ59óð: EGØ"&óò>Có
Bóò;ò;ð @DØ04óð$ )-Ø=?óò67óLóð :<Ø"&ó/ó
ò$ð FJØ24Ø*.óò(8ð 59Ø=?ó(òT<ð +/Ø&(Ø"óò"3ó òD1÷A
r   c                 ó:   — 	 | j                   S # t        $ r Y yw xY wr«   )Ú__component_name__ÚAttributeError)r)   s    r
   r“   r“   <  s%   € ðØ×+Ñ+Ð+øÜò Ùðús   ‚ Ž	™c                 óf   — t        t        | «      «      }t        |«      dk(  r|d   S t        d«      ‚)NrK   r   zWThe utility doesn't provide a single interface and no provided interface was specified.)rw   r   rÏ   rL   )r)   rM   s     r
   r’   r’   B  s9   € Ü”J˜yÓ)Ó*€HÜ
ˆ8ƒ}˜ÒØ˜‰{ÐÜ
ð	3ó4ð 4r   c                 óf   — t        t        | «      «      }t        |«      dk(  r|d   S t        d«      ‚)NrK   r   zaThe adapter factory doesn't implement a single interface and no provided interface was specified.)rw   r   rÏ   rL   )rZ   rM   s     r
   r¬   r¬   J  s9   € Ü”M 'Ó*Ó+€HÜ
ˆ8ƒ}˜ÒØ˜‰{ÐÜ
ð	3ó4ð 4r   c                 ó~  — |€	 | j                   }n t        j                  |«      rt        d«      ‚g }|D ]d  }|€t
        }nHt        j                  |«      s3t        |t        «      rt        |«      }nt        dt        |«      z  «      ‚|j                  |«       Œf t        |«      S # t        $ r t        d«      ‚w xY w)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÷   rL   r   r   r   rd   Útyper   r.   rh   )rZ   r°   ÚresultrÐ   s       r
   r­   r­   R  sÚ   € ØÐð	Ø×3Ñ3‰Hô 
×	"Ñ	" 8Ô	,Üð =ó >ð 	>ð €FØò 
ˆØˆ9Ü‰AÜ×*Ñ*¨1Ô-Ü˜!œTÔ"Ü! !Ó$‘äð !AÜCGÈÃ7ñ!Kó "ð "ð 	�‰�aÕð
ô �‹=Ðøô+ ò 	ÜðJóð ð	ús   „B' Â'B<c                   óD   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)r”   Nc                 ó^   — ||||||f\  | _         | _        | _        | _        | _        | _        y r   )ÚregistryrM   rX   r)   rY   rZ   )r"   r   rM   rX   r)   ÚdocrZ   s          r
   r%   zUtilityRegistration.__init__q  s2   € ð �x  y°#°wÐ>ñ	ˆŒ˜œ t¤y°$´.À$Ä)Ø	�r   c                 ó"  — dj                  | j                  j                  | j                  t	        | j
                  dd «      | j                  t	        | j                  dt        | j                  «      «      | j                  | j                  «      S )Nz"{}({!r}, {}, {!r}, {}, {!r}, {!r})r5   )rm   rn   r5   r   ÚgetattrrM   rX   r)   ÚreprrZ   rY   ro   s    r
   rp   zUtilityRegistration.__repr__v  se   € Ø3×:Ñ:Ø—‘×'Ñ'Ø—‘Ü˜Ÿ™ z°4Ó8¸$¿)¹)Ü˜Ÿ™¨
´D¸¿¹Ó4HÓIØ—‘˜dŸi™ióð 	r   c                 ó   — t        | «      S r   ©Úidro   s    r
   Ú__hash__zUtilityRegistration.__hash__  ó   € Ü�$‹xˆr   c                 ó0   — t        | «      t        |«      k(  S r   ©r  ©r"   Úothers     r
   Ú__eq__zUtilityRegistration.__eq__‚  ó   € Ü�D‹zœT %›[Ñ(Ð(r   c                 ó0   — t        | «      t        |«      k7  S r   r  r  s     r
   Ú__ne__zUtilityRegistration.__ne__…  r  r   c                 ó0   — t        | «      t        |«      k  S r   r  r  s     r
   Ú__lt__zUtilityRegistration.__lt__ˆ  ó   € Ü�D‹zœD ›KÑ'Ð'r   c                 ó0   — t        | «      t        |«      k  S r   r  r  s     r
   Ú__le__zUtilityRegistration.__le__‹  r  r   c                 ó0   — t        | «      t        |«      kD  S r   r  r  s     r
   Ú__gt__zUtilityRegistration.__gt__Ž  r  r   c                 ó0   — t        | «      t        |«      k\  S r   r  r  s     r
   Ú__ge__zUtilityRegistration.__ge__‘  r  r   r   ©r5   r6   r7   r%   rp   r  r  r  r  r  r  r  r   r   r
   r”   r”   n  s/   „ ó?ò
òò)ò)ò(ò)ò(ó)r   r”   c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)r®   c                 ó^   — ||||||f\  | _         | _        | _        | _        | _        | _        y r   )r   r°   rM   rX   rZ   rY   )r"   r   r°   rM   rX   r)   r  s          r
   r%   zAdapterRegistration.__init__—  s2   € ð �x ¨4°¸CÐ?ñ	ˆŒ˜œ t¤}°d´iØ	Œ�t•yr   c                 ó†  — dj                  | j                  j                  | j                  ddj	                  | j
                  D �cg c]  }|j                  ‘Œ c}«      z   dz   t        | j                  dd «      | j                  t        | j                  dt        | j                  «      «      | j                  «      S c c}w )Nz {}({!r}, {}, {}, {!r}, {}, {!r})ú[ú, ú]r5   )rm   rn   r5   r   Újoinr°   r  rM   rX   rZ   r  rY   ©r"   rÐ   s     r
   rp   zAdapterRegistration.__repr__œ  s�   € Ø1×8Ñ8Ø�N‰N×#Ñ#Ø�M‰MØ�$—)‘)°·±Ö?¨A˜QŸZ›ZÒ?Ó@Ñ@À3ÑFÜ�D—M‘M :¨tÓ4°d·i±iÜ�D—L‘L *¬d°4·<±<Ó.@ÓAÀ4Ç9Á9óð 	ùò @s   ÁB>c                 ó   — t        | «      S r   r  ro   s    r
   r  zAdapterRegistration.__hash__¥  r	  r   c                 ó0   — t        | «      t        |«      k(  S r   r  r  s     r
   r  zAdapterRegistration.__eq__¨  r  r   c                 ó0   — t        | «      t        |«      k7  S r   r  r  s     r
   r  zAdapterRegistration.__ne__«  r  r   c                 ó0   — t        | «      t        |«      k  S r   r  r  s     r
   r  zAdapterRegistration.__lt__®  r  r   c                 ó0   — t        | «      t        |«      k  S r   r  r  s     r
   r  zAdapterRegistration.__le__±  r  r   c                 ó0   — t        | «      t        |«      kD  S r   r  r  s     r
   r  zAdapterRegistration.__gt__´  r  r   c                 ó0   — t        | «      t        |«      k\  S r   r  r  s     r
   r  zAdapterRegistration.__ge__·  r  r   Nr  r   r   r
   r®   r®   ”  s0   „ ò@ò
òò)ò)ò(ò)ò(ó)r   r®   c                   ó   — e Zd Zy)rÈ   N)r5   r6   r7   r   r   r
   rÈ   rÈ   º  s   „ àr   rÈ   c                   ó,   — e Zd Zd„ Zed„ «       ZdZd„ Zy)rÙ   c                 óP   — |||||f\  | _         | _        | _        | _        | _        y r   )r   r°   rX   ÚhandlerrY   )r"   r   r°   rX   r.  r  s         r
   r%   zHandlerRegistration.__init__Â  s)   € à�x  w°Ð3ñ	ˆŒ˜œ t¤y°$´,ÀÅ	r   c                 ó   — | j                   S r   )r.  ro   s    r
   rZ   zHandlerRegistration.factoryÆ  s   € à�|‰|Ðr   Nc                 óZ  — dj                  | j                  j                  | j                  ddj	                  | j
                  D �cg c]  }|j                  ‘Œ c}«      z   dz   | j                  t        | j                  dt        | j                  «      «      | j                  «      S c c}w )Nz{}({!r}, {}, {!r}, {}, {!r})r  r   r!  r5   )rm   rn   r5   r   r"  r°   rX   r  rZ   r  rY   r#  s     r
   rp   zHandlerRegistration.__repr__Ì  s~   € Ø-×4Ñ4Ø�N‰N×#Ñ#Ø�M‰MØ�$—)‘)°·±Ö?¨A˜QŸZ›ZÒ?Ó@Ñ@À3ÑFØ�I‰IÜ�D—L‘L *¬d°4·<±<Ó.@ÓAÀ4Ç9Á9óð 	ùò @s   ÁB()r5   r6   r7   r%   ró   rZ   rM   rp   r   r   r
   rÙ   rÙ   ¿  s'   „ ò4ð ñó ðð €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   Ú__all__r   r:   r<   r   r“   r’   r¬   r­   r”   r®   rÈ   rÙ   r   r   r
   ú<module>r:     s=  ðñå #ð!Ý!õ 5Ý :Ý :Ý 1Ý :Ý FÝ :Ý 0Ý 2å .Ý 5Ý 3Ý 8Ý 2Ý 2ð ð	€÷"ñ "ò6÷@Añ @AñF ˆ[Ó÷i
ð i
ó ði
òVò4ò4òñ8 Ð!Ó"÷#)ð #)ó #ð#)ñJ Ð!Ó"÷#)ð #)ó #ð#)ñJ Ð2Ó3ô	Ð2ó 	ó 4ð	ñ Ð&Ó'ôÐ-ó ó (ñøðY ò !Ü ð!ús   ŠC< Ã<DÄD