ó
2(Vc           @   s)  d  Z  y d d l m Z Wn e k
 r6 d „  Z n Xd 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 d l m Z e e ƒ d e f d „  ƒ  Yƒ Z d „  Z d „  Z d „  Z d „  Z  e e ƒ d e f d „  ƒ  Yƒ Z! e e ƒ d e f d „  ƒ  Yƒ Z" e e
 ƒ d  e" f d! „  ƒ  Yƒ Z# e e	 ƒ d" e" f d# „  ƒ  Yƒ Z$ d$ S(%   s   Basic components support
iÿÿÿÿ(   t   notifyc          O   s   d  S(   N(    (   t   argt   kw(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR       s    (   t   ISpecification(   t   ComponentLookupError(   t   IAdapterRegistration(   t   IComponents(   t   IHandlerRegistration(   t    ISubscriptionAdapterRegistration(   t   IUtilityRegistration(   t
   Registered(   t   Unregistered(   t	   Interface(   t   implementedBy(   t   implementer(   t   implementer_only(   t
   providedBy(   t   AdapterRegistry(   t   _u(   t   CLASS_TYPES(   t   STRING_TYPESt
   Componentsc           B   s  e  Z d  d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  d „  ƒ Z	 d! d! e d  ƒ e d  ƒ e d! d	 „ Z d! d! e d  ƒ d! d
 „ Z d „  Z e d  ƒ d! d „ Z e d  ƒ d „ Z d „  Z d „  Z d! d! e d  ƒ e d  ƒ e d „ Z d! d! d! e d  ƒ d „ Z d „  Z e d  ƒ d! d „ Z e d  ƒ d „ Z e d  ƒ d! d „ Z e d  ƒ d „ Z d „  Z d! d! e d  ƒ e d  ƒ e d „ Z d „  Z d! d! d! e d  ƒ d „ Z d „  Z d! e d  ƒ e d  ƒ e d „ Z  d „  Z! d! d! e d  ƒ d „ Z" d „  Z# RS("   t    c         C   sE   t  | t ƒ s t ‚ | |  _ |  j ƒ  |  j ƒ  t | ƒ |  _ d  S(   N(   t
   isinstanceR   t   AssertionErrort   __name__t   _init_registriest   _init_registrationst   tuplet	   __bases__(   t   selft   namet   bases(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __init__-   s
    	

c         C   s   d |  j  j |  j f S(   Ns   <%s %s>(   t	   __class__R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __repr__4   s    c         C   s   t  ƒ  |  _ t  ƒ  |  _ d  S(   N(   R   t   adapterst	   utilities(   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR   7   s    c         C   s(   i  |  _  i  |  _ g  |  _ g  |  _ d  S(   N(   t   _utility_registrationst   _adapter_registrationst   _subscription_registrationst   _handler_registrations(   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR   ;   s    			c         C   s   |  j  j d d ƒ S(   NR   (    (   t   __dict__t   get(   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt	   _getBasesA   s    c         C   sg   t  g  | D] } | j ^ q
 ƒ |  j _ t  g  | D] } | j ^ q2 ƒ |  j _ t  | ƒ |  j d <d  S(   NR   (   R   R$   R   R%   R*   (   R   R    t   base(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt	   _setBasesE   s
    %%c         C   s
   |  j  ƒ  S(   N(   R,   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   <lambda>N   s    c         C   s   |  j  | ƒ S(   N(   R.   (   R   R    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR/   O   s    c      	   C   s™  | r' | r t  d ƒ ‚ n  | ƒ  } n  | d  k rB t | ƒ } n  | t d ƒ k rc t | ƒ } n  |  j j | | f ƒ } | d  k	 r» | d  | | f k r¡ d  S|  j | d | | ƒ n  t } xO t	 |  j j
 ƒ  ƒ D]8 \ \ }	 }
 } |	 | k r× | d | k r× t } Pq× q× W| | | f |  j | | f <|  j j d | | | ƒ | sg|  j j d | | ƒ n  | r•t t t |  | | | | | ƒ ƒ ƒ n  d  S(   Ns$   Can't specify factory and component.R   i   i    (    (    (   t	   TypeErrort   Nonet   _getUtilityProvidedR   t   _getNameR&   R+   t   unregisterUtilityt   Falset   itert   itemst   TrueR%   t   registert	   subscribeR    R
   t   UtilityRegistration(   R   t	   componentt   providedR   t   infot   eventt   factoryt   regt
   subscribedt   pt   _t   data(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registerUtilityR   s4    (c   
   	   C   s  | r' | r t  d ƒ ‚ n  | ƒ  } n  | d  k r] | d  k rN t  d ƒ ‚ n  t | ƒ } n  |  j j | | f ƒ } | d  k s | d  k	 r¡ | | d k r¡ t S| d  k rº | d } n  |  j | | f =|  j j d | | ƒ t } xO t |  j j	 ƒ  ƒ D]8 \ \ } } }	 | | k rü |	 d | k rü t
 } Pqü qü W| sW|  j j d | | ƒ n  t t t |  | | | | d Œ ƒ ƒ t
 S(   Ns$   Can't specify factory and component.s3   Must specify one of component, factory and providedi    i   (    (    (   R0   R1   R2   R&   R+   R5   R%   t
   unregisterR6   R7   R8   t   unsubscribeR    R   R;   (
   R   R<   R=   R   R@   t   oldRB   RC   RD   RE   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR4   x   s4    ( c         c   sD   x= t  |  j j ƒ  ƒ D]& \ \ } } } t |  | | | Œ Vq Wd  S(   N(   R6   R&   R7   R;   (   R   R=   R   RE   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registeredUtilities¡   s    %c         C   s   |  j  j d | | | ƒ S(   N(    (   R%   t   lookup(   R   R=   R   t   default(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   queryUtility¦   s    c         C   s:   |  j  j d | | ƒ } | d  k r6 t | | ƒ ‚ n  | S(   N(    (   R%   RK   R1   R   (   R   R=   R   t   utility(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt
   getUtility©   s    c         c   s5   x. |  j  j d | ƒ D] \ } } | | f Vq Wd  S(   N(    (   R%   t	   lookupAll(   R   t	   interfaceR   RN   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   getUtilitiesFor¯   s    "c         C   s   |  j  j d | ƒ S(   N(    (   R%   t   subscriptions(   R   RQ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   getAllUtilitiesRegisteredFor³   s    c      	   C   s²   | d  k r t | ƒ } n  t | | ƒ } | t d ƒ k rK t | ƒ } n  | | f |  j | | | f <|  j j | | | | ƒ | r® t t	 t
 |  | | | | | ƒ ƒ ƒ n  d  S(   NR   (   R1   t   _getAdapterProvidedt   _getAdapterRequiredR   R3   R'   R$   R9   R    R
   t   AdapterRegistration(   R   R@   t   requiredR=   R   R>   R?   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registerAdapter¶   s    c         C   s  | d  k r6 | d  k r' t d ƒ ‚ n  t | ƒ } n  | d  k r] | d  k r] t d ƒ ‚ n  t | | ƒ } |  j j | | | f ƒ } | d  k s¯ | d  k	 r³ | | d k r³ t S|  j | | | f =|  j j | | | ƒ t	 t
 t |  | | | | Œ ƒ ƒ t S(   Ns(   Must specify one of factory and provideds(   Must specify one of factory and requiredi    (   R1   R0   RU   RV   R'   R+   R5   R$   RG   R    R   RW   R8   (   R   R@   RX   R=   R   RI   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   unregisterAdapterÈ   s"    c         c   sS   xL t  |  j j ƒ  ƒ D]5 \ \ } } } \ } } t |  | | | | | ƒ Vq Wd  S(   N(   R6   R'   R7   RW   (   R   RX   R=   R   R<   R>   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registeredAdaptersã   s    .c         C   s   |  j  j | | | | ƒ S(   N(   R$   t   queryAdapter(   R   t   objectRQ   R   RL   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR\   é   s    c         C   s=   |  j  j | | | ƒ } | d  k r9 t | | | ƒ ‚ n  | S(   N(   R$   R\   R1   R   (   R   R]   RQ   R   t   adapter(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt
   getAdapterì   s    c         C   s   |  j  j | | | | ƒ S(   N(   R$   t   queryMultiAdapter(   R   t   objectsRQ   R   RL   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR`   ò   s    	c         C   s=   |  j  j | | | ƒ } | d  k r9 t | | | ƒ ‚ n  | S(   N(   R$   R`   R1   R   (   R   Ra   RQ   R   R^   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   getMultiAdapter÷   s    c         c   s_   xX |  j  j t t t | ƒ ƒ | ƒ D]2 \ } } | | Œ  } | d  k	 r% | | f Vq% q% Wd  S(   N(   R$   RP   t   listt   mapR   R1   (   R   Ra   R=   R   R@   R^   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   getAdaptersý   s    c      	   C   s¦   | r t  d ƒ ‚ n  | d  k r0 t | ƒ } n  t | | ƒ } |  j j | | | | | f ƒ |  j j | | | ƒ | r¢ t t	 t
 |  | | | | | ƒ ƒ ƒ n  d  S(   Ns'   Named subscribers are not yet supported(   R0   R1   RU   RV   R(   t   appendR$   R:   R    R
   t   SubscriptionRegistration(   R   R@   RX   R=   R   R>   R?   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registerSubscriptionAdapter  s    	c         c   s&   x |  j  D] } t |  | Œ Vq
 Wd  S(   N(   R(   Rg   (   R   RE   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registeredSubscriptionAdapters  s    c      	   C   s¨  | r t  d ƒ ‚ n  | d  k rK | d  k r< t  d ƒ ‚ n  t | ƒ } n  | d  k rr | d  k rr t  d ƒ ‚ n  t | | ƒ } | d  k râ g  |  j D]B \ } } } } }	 | | k oÁ | | k s— | | | | |	 f ^ q— }
 n^ g  |  j D]N \ } } } } }	 | | k o"| | k o"| | k sì | | | | |	 f ^ qì }
 t |
 ƒ t |  j ƒ k r_t S|
 |  j (|  j j | | | ƒ t	 t
 t |  | | | | d ƒ ƒ ƒ t S(   Ns'   Named subscribers are not yet supporteds(   Must specify one of factory and provideds(   Must specify one of factory and requiredR   (   R0   R1   RU   RV   R(   t   lenR5   R$   RH   R    R   Rg   R8   (   R   R@   RX   R=   R   t   rRC   t   nt   ft   it   new(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   unregisterSubscriptionAdapter  s0    6?
c         C   s   |  j  j | | ƒ S(   N(   R$   t   subscribers(   R   Ra   R=   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRq   G  s    c         C   s…   | r t  d ƒ ‚ n  t | | ƒ } |  j j | | | | f ƒ |  j j | d  | ƒ | r t t t	 |  | | | | ƒ ƒ ƒ n  d  S(   Ns$   Named handlers are not yet supported(
   R0   RV   R)   Rf   R$   R:   R1   R    R
   t   HandlerRegistration(   R   R@   RX   R   R>   R?   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registerHandlerJ  s    	c         c   s&   x |  j  D] } t |  | Œ Vq
 Wd  S(   N(   R)   Rr   (   R   RE   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   registeredHandlers[  s    c   	      C   sK  | r t  d ƒ ‚ n  | d  k r< | d  k r< t  d ƒ ‚ n  t | | ƒ } | d  k rš g  |  j D]0 \ } } } } | | k ra | | | | f ^ qa } nL g  |  j D]< \ } } } } | | k oË | | k s¤ | | | | f ^ q¤ } t | ƒ t |  j ƒ k rt S| |  j (|  j j | d  | ƒ t t	 t
 |  | | | d ƒ ƒ ƒ t S(   Ns'   Named subscribers are not yet supporteds(   Must specify one of factory and requiredR   (   R0   R1   RV   R)   Rj   R5   R$   RH   R    R   Rr   R8   (	   R   R@   RX   R   Rk   Rl   Rm   Rn   Ro   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   unregisterHandler_  s&    '0
c         G   s   |  j  j | d  ƒ d  S(   N(   R$   Rq   R1   (   R   Ra   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   handle  s    (    N($   R   t
   __module__R!   R#   R   R   R,   R.   t   propertyR   R1   R   R8   RF   R4   RJ   RM   RO   RR   RT   RY   RZ   R[   R\   R_   R`   Rb   Re   Rh   Ri   Rp   Rq   Rs   Rt   Ru   Rv   (    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR   *   sT   					%(								)		"c         C   s*   y |  j  SWn t k
 r% t d ƒ SXd  S(   NR   (   t   __component_name__t   AttributeErrorR   (   R<   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR3   …  s    c         C   s<   t  t |  ƒ ƒ } t | ƒ d k r, | d St d ƒ ‚ d  S(   Ni   i    sW   The utility doesn't provide a single interface and no provided interface was specified.(   Rc   R   Rj   R0   (   R<   R=   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR2   ‹  s
    c         C   s<   t  t |  ƒ ƒ } t | ƒ d k r, | d St d ƒ ‚ d  S(   Ni   i    sa   The adapter factory doesn't implement a single interface and no provided interface was specified.(   Rc   R   Rj   R0   (   R@   R=   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRU   “  s
    c         C   sÙ   | d  k r< y |  j } WqZ t k
 r8 t d ƒ ‚ qZ Xn t j | ƒ rZ t d ƒ ‚ n  g  } xl | D]d } | d  k r‚ t } n< t j | ƒ s¾ t | t ƒ r¯ t	 | ƒ } q¾ t d ƒ ‚ n  | j
 | ƒ qg Wt | ƒ S(   Nso   The adapter factory doesn't have a __component_adapts__ attribute and no required specifications were specifiedsL   the required argument should be a list of interfaces, not a single interfaces8   Required specification must be a specification or class.(   R1   t   __component_adapts__Rz   R0   R   R   R   R   R   R   Rf   R   (   R@   RX   t   resultRk   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRV   ›  s$    	R;   c           B   s\   e  Z d	 d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(
   c         C   s@   | | | | | | f \ |  _  |  _ |  _ |  _ |  _ |  _ d  S(   N(   t   registryR=   R   R<   R>   R@   (   R   R}   R=   R   R<   t   docR@   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR!   º  s    c      
   C   sV   d |  j  j |  j t |  j d d  ƒ |  j t |  j d t |  j ƒ ƒ |  j	 |  j
 f S(   Ns   %s(%r, %s, %r, %s, %r, %r)R   (   R"   R   R}   t   getattrR=   R1   R   R<   t   reprR@   R>   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR#   ¿  s    	c         C   s
   t  |  ƒ S(   N(   t   id(   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __hash__È  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   t   other(    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __eq__Ë  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __ne__Î  s    c         C   s   t  |  ƒ t  | ƒ k  S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __lt__Ñ  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __le__Ô  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __gt__×  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   __ge__Ú  s    N(   R   Rw   R1   R!   R#   R‚   R„   R…   R†   R‡   Rˆ   R‰   (    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR;   ·  s   								RW   c           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C   s@   | | | | | | f \ |  _  |  _ |  _ |  _ |  _ |  _ d  S(   N(   R}   RX   R=   R   R@   R>   (   R   R}   RX   R=   R   R<   R~   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR!   à  s    c         C   s}   d |  j  j |  j d d j g  |  j D] } | j ^ q% ƒ d t |  j d d  ƒ |  j t |  j	 d t
 |  j	 ƒ ƒ |  j f S(   Ns   %s(%r, %s, %s, %r, %s, %r)t   [s   , t   ]R   (   R"   R   R}   t   joinRX   R   R=   R1   R   R@   R€   R>   (   R   Rk   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR#   å  s    	-c         C   s
   t  |  ƒ S(   N(   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR‚   î  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR„   ñ  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR…   ô  s    c         C   s   t  |  ƒ t  | ƒ k  S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR†   ÷  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR‡   ú  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRˆ   ý  s    c         C   s   t  |  ƒ t  | ƒ k S(   N(   R€   (   R   Rƒ   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR‰      s    (   R   Rw   R!   R#   R‚   R„   R…   R†   R‡   Rˆ   R‰   (    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRW   Ý  s   									Rg   c           B   s   e  Z RS(    (   R   Rw   (    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRg     s   Rr   c           B   s/   e  Z d  „  Z e d „  ƒ Z d Z d „  Z RS(   c         C   s7   | | | | | f \ |  _  |  _ |  _ |  _ |  _ d  S(   N(   R}   RX   R   t   handlerR>   (   R   R}   RX   R   R   R~   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR!     s    c         C   s   |  j  S(   N(   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR@     s    c      
   C   sk   d |  j  j |  j d d j g  |  j D] } | j ^ q% ƒ d |  j t |  j d t |  j ƒ ƒ |  j	 f S(   Ns   %s(%r, %s, %r, %s, %r)RŠ   s   , R‹   R   (
   R"   R   R}   RŒ   RX   R   R   R@   R€   R>   (   R   Rk   (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyR#     s    	-N(   R   Rw   R!   Rx   R@   R1   R=   R#   (    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyRr     s   	N(%   t   __doc__t
   zope.eventR    t   ImportErrort   zope.interface.interfacesR   R   R   R   R   R   R	   R
   R   t   zope.interface.interfaceR   t   zope.interface.declarationsR   R   R   R   t   zope.interface.adapterR   t   zope.interface._compatR   R   R   R]   R   R3   R2   RU   RV   R;   RW   Rg   Rr   (    (    (    s;   /usr/lib/python2.7/dist-packages/zope/interface/registry.pyt   <module>   sJ   ÿ [				%%