ó
ÔËÞKc           @   s>  d  Z  d d l m Z d d l Z d d l m Z d d l Z d d l m Z d d l	 m
 Z
 d Z d Z d	 Z e ƒ  Z d
 „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e Z y d d l m Z Wn e k
 rä n Xe ƒ  Z d e f d „  ƒ  YZ e Z y d d l m Z Wn e k
 r1n Xg  Z y d d l m Z Wn e k
 r_n Xd e f d „  ƒ  YZ d e e e f d „  ƒ  YZ e d d d ƒZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e  d  e  d! „ Z! e  e  d" „ Z" d# „  Z# d d$ l$ m% Z% d d% l$ m& Z& d d& l m' Z' d d' l m( Z( d S((   s    Interface object implementation
iÿÿÿÿ(   t
   generatorsN(   t   FunctionType(   t   Invalid(   t   roi   i   t   __interface_tagged_values__c         C   sG   t  j d ƒ j } | j t i  ƒ } | j d g  ƒ } | j |  ƒ t S(   Ni   t
   invariants(   t   syst	   _getframet   f_localst
   setdefaultt   TAGGED_DATAt   appendt   _decorator_non_return(   t   callR   t   tagsR   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt	   invariant    s
    c         C   s2   t  j d ƒ j } | j t i  ƒ } | | |  <t S(   s;   Attaches a tagged value to an interface at definition time.i   (   R   R   R   R	   R
   R   (   t   keyt   valueR   t   tagged_values(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   taggedValue(   s    
t   Elementc           B   sM   e  Z d  d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z	 RS(	   t    c         C   sJ   | r+ | j  d ƒ d k r+ | } d } n  | |  _ | |  _ i  |  _ d S(   s*   Create an 'attribute' description
        t    i    N(   t   findt   Nonet   __name__t   __doc__t   _Element__tagged_values(   t   selfR   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __init__7   s    			c         C   s   |  j  S(   s!    Returns the name of the object. (   R   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getNameB   s    c         C   s   |  j  S(   s+    Returns the documentation for the object. (   R   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getDocF   s    c         C   s   |  j  | S(   s*    Returns the value associated with 'tag'. (   R   (   R   t   tag(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getTaggedValueJ   s    c         C   s   |  j  j | | ƒ S(   s*    Returns the value associated with 'tag'. (   R   t   get(   R   R    t   default(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   queryTaggedValueN   s    c         C   s   |  j  j ƒ  S(   s    Returns a list of all tags. (   R   t   keys(   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getTaggedValueTagsR   s    c         C   s   | |  j  | <d S(   s     Associates 'value' with 'key'. N(   R   (   R   R    R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   setTaggedValueV   s    N(
   R   t
   __module__R   R   R   R!   R   R$   R&   R'   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR   0   s   				t   SpecificationBasePyc           B   s)   e  Z d  „  Z d „  Z d „  Z e Z RS(   c         C   s   t  | ƒ } |  | j k S(   so  Is the interface implemented by an object

          >>> from zope.interface import *
          >>> class I1(Interface):
          ...     pass
          >>> class C(object):
          ...     implements(I1)
          >>> c = C()
          >>> class X(object):
          ...     pass
          >>> x = X()
          >>> I1.providedBy(x)
          False
          >>> I1.providedBy(C)
          False
          >>> I1.providedBy(c)
          True
          >>> directlyProvides(x, I1)
          >>> I1.providedBy(x)
          True
          >>> directlyProvides(C, I1)
          >>> I1.providedBy(C)
          True

        (   t
   providedByt   _implied(   R   t   obt   spec(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR*   \   s    c         C   s   t  | ƒ } |  | j k S(   s‹   Test whether the specification is implemented by a class or factory.
        Raise TypeError if argument is neither a class nor a callable.(   t   implementedByR+   (   R   t   clsR-   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR.   y   s    c         C   s   | |  j  k S(   s  Is the interface the same as or extend the given interface

        Examples::

          >>> from zope.interface import Interface
          >>> from zope.interface.declarations import Declaration
          >>> class I1(Interface): pass
          ...
          >>> class I2(I1): pass
          ...
          >>> class I3(Interface): pass
          ...
          >>> class I4(I3): pass
          ...
          >>> spec = Declaration()
          >>> int(spec.extends(Interface))
          1
          >>> spec = Declaration(I2)
          >>> int(spec.extends(Interface))
          1
          >>> int(spec.extends(I1))
          1
          >>> int(spec.extends(I2))
          1
          >>> int(spec.extends(I3))
          0
          >>> int(spec.extends(I4))
          0

        (   R+   (   R   t	   interface(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   isOrExtends   s    (   R   R(   R*   R.   R1   t   __call__(    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR)   Z   s   			!(   t   SpecificationBaset   InterfaceBasePyc           B   s#   e  Z d  Z e d „ Z d „  Z RS(   s:   Base class that wants to be replaced with a C base :)
    c         C   s…   t  | d d ƒ } | d k	 r@ |  j | ƒ } | d k	 r@ | Sn  |  j | ƒ } | d k	 r_ | S| t k	 ro | St d | |  ƒ ‚ d S(   s)   Adapt an object to the interface
        t   __conform__s   Could not adaptN(   t   getattrR   t   _call_conformt	   __adapt__t   _markert	   TypeError(   R   t   objt	   alternatet   conformt   adapter(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR2   ­   s    c         C   sG   |  j  | ƒ r | Sx- t D]% } | |  | ƒ } | d k	 r | Sq Wd S(   s(   Adapt an object to the reciever
        N(   R*   t   adapter_hooksR   (   R   R;   t   hookR>   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR8   ¿   s    (   R   R(   R   R9   R2   R8   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR4   ©   s   (   t   InterfaceBase(   R?   t   Specificationc           B   s   e  Z d  Z e j Z e j Z d d „ Z d „  Z d „  Z d „  Z	 e
 d „  e	 ƒ Z d „  Z d „  Z e d „ Z d d	 „ Z d d
 „ Z RS(   sI  Specifications

    An interface specification is used to track interface declarations
    and component registrations.

    This class is a base class for both interfaces themselves and for
    interface specifications (declarations).

    Specifications are mutable.  If you reassign their cases, their
    relations with other specifications are adjusted accordingly.

    For example:

    >>> from zope.interface import Interface
    >>> class I1(Interface):
    ...     pass
    >>> class I2(I1):
    ...     pass
    >>> class I3(I2):
    ...     pass

    >>> [i.__name__ for i in I1.__bases__]
    ['Interface']

    >>> [i.__name__ for i in I2.__bases__]
    ['I1']

    >>> I3.extends(I1)
    1

    >>> I2.__bases__ = (Interface, )

    >>> [i.__name__ for i in I2.__bases__]
    ['Interface']

    >>> I3.extends(I1)
    0

    c         C   s+   i  |  _  t j ƒ  |  _ t | ƒ |  _ d  S(   N(   R+   t   weakreft   WeakKeyDictionaryt
   dependentst   tuplet	   __bases__(   R   t   bases(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR     s    	c         C   s$   |  j  j | d ƒ d |  j  | <d  S(   Ni    i   (   RE   R"   (   R   t	   dependent(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt	   subscribe  s    c         C   sX   |  j  j | d ƒ d } | s, |  j  | =n( | d k rH | |  j  | <n t | ƒ ‚ d  S(   Ni    i   (   RE   R"   t   KeyError(   R   RI   t   n(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   unsubscribe  s    c         C   s]   x |  j  D] } | j |  ƒ q
 W| |  j d <x | D] } | j |  ƒ q5 W|  j |  ƒ d  S(   NRG   (   RG   RM   t   __dict__RJ   t   changed(   R   RH   t   b(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt
   __setBases  s    c         C   s   |  j  j d d ƒ S(   NRG   (    (   RN   R"   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   <lambda>%  s    c         C   s÷   y
 |  `  Wn t k
 r n X|  j } | j ƒ  t |  ƒ } y  t | k r\ | j t ƒ n  Wn t k
 rp n Xt | ƒ |  _	 t g  | D] } t
 | t ƒ rŠ | ^ qŠ ƒ |  _ x | D] } d | | <q¸ Wx$ |  j j ƒ  D] } | j | ƒ qÜ Wd S(   s4   We, or something we depend on, have changed
        N(    (   t   _v_attrst   AttributeErrorR+   t   clearR   t	   InterfaceR   t	   NameErrorRF   t   __sro__t
   isinstancet   InterfaceClasst   __iro__RE   R%   RO   (   R   t   originally_changedt   impliedt	   ancestorst   ancestorRI   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRO   )  s&    
	
!c         c   sS   i  } xF |  j  D]; } x2 | j ƒ  D]$ } | | k r# d | | <| Vq# q# Wq Wd S(   s?  Return an iterator for the interfaces in the specification

        for example::

          >>> from zope.interface import Interface
          >>> class I1(Interface): pass
          ...
          >>> class I2(I1): pass
          ...
          >>> class I3(Interface): pass
          ...
          >>> class I4(I3): pass
          ...
          >>> spec = Specification((I2, I3))
          >>> spec = Specification((I4, spec))
          >>> i = spec.interfaces()
          >>> [x.getName() for x in i]
          ['I4', 'I2', 'I3']
          >>> list(i)
          []
        i   N(   RG   t
   interfaces(   R   t   seent   baseR0   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR`   J  s    
c         C   s    | |  j  k o | p |  | k S(   sò  Does the specification extend the given interface?

        Test whether an interface in the specification extends the
        given interface

        Examples::

          >>> from zope.interface import Interface
          >>> from zope.interface.declarations import Declaration
          >>> class I1(Interface): pass
          ...
          >>> class I2(I1): pass
          ...
          >>> class I3(Interface): pass
          ...
          >>> class I4(I3): pass
          ...
          >>> spec = Declaration()
          >>> int(spec.extends(Interface))
          1
          >>> spec = Declaration(I2)
          >>> int(spec.extends(Interface))
          1
          >>> int(spec.extends(I1))
          1
          >>> int(spec.extends(I2))
          1
          >>> int(spec.extends(I3))
          0
          >>> int(spec.extends(I4))
          0
          >>> I2.extends(I2)
          0
          >>> I2.extends(I2, False)
          1
          >>> I2.extends(I2, strict=False)
          1

        (   R+   (   R   R0   t   strict(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   extendsh  s    (c         C   s   t  j |  | ƒ S(   N(   RC   t   ref(   R   t   callback(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRC   •  s    c         C   s¡   y |  j  } Wn t k
 r- i  } |  _  n X| j | ƒ } | d k r‰ x= |  j D]/ } | j | ƒ } | d k	 rS | | | <PqS qS Wn  | d k r™ | S| Sd S(   s+   Query for an attribute description
        N(   RS   RT   R"   R   R[   t   direct(   R   t   nameR#   t   attrst   attrt   iface(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR"   ˜  s    
(    N(   R   R(   R   R3   R1   R*   R   RJ   RM   t   _Specification__setBasest   propertyRG   RO   R`   t   TrueRd   R   RC   R"   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRB   Ù   s   '								!	-RZ   c           B   sé   e  Z d  Z d d d d d „ Z d „  Z d „  Z d „  Z e d „ Z	 d „  Z
 e d „ Z d „  Z e Z d	 „  Z d
 „  Z d d „ Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s0   Prototype (scarecrow) Interfaces Implementation.c         C   s`  | d  k r i  } n  | d  k r€ | j d ƒ } t | t ƒ rI | d =q€ y t j d ƒ j d } Wq€ t t f k
 r| q€ Xn  | |  _	 | j d ƒ } | d  k	 rÕ t | t
 ƒ sÕ | d  k rÈ | } n  | d =qÕ n  | d  k rê d } n  t j |  | | ƒ | j t d  ƒ } | d  k	 rKx- | j ƒ  D] \ } }	 |  j | |	 ƒ q(Wn  x, | D]$ }
 t |
 t ƒ sRt d ƒ ‚ qRqRWt j |  | ƒ x­ | j ƒ  D]Ÿ \ } } | d k rµq—n  t | t
 ƒ rå|  | _ | j s6| | _ q6q—t | t ƒ rt | |  d | ƒ| | <q—| t k r&| | =q—t d	 | ƒ ‚ q—W| |  _ d
 |  j	 |  j f |  _ d  S(   NR(   i   R   R   R   s   Expected base interfacest
   __locals__Rh   s   Concrete attribute, s   %s.%s(   R   R"   RY   t   strR   R   t	   f_globalsRT   RK   R(   t	   AttributeR   R   t   popR
   t   itemsR'   RZ   R:   RB   R0   R   R   t   fromFunctionR   t   InvalidInterfacet   _InterfaceClass__attrst   __identifier__(   R   Rh   RH   Ri   R   R(   t   dt   tagged_dataR   t   valRb   Rj   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR   ´  sT    	
					
	c         c   s	   |  Vd S(   sO  Return an iterator for the interfaces in the specification

        for example::

          >>> from zope.interface import Interface
          >>> class I1(Interface): pass
          ...
          >>>
          >>> i = I1.interfaces()
          >>> [x.getName() for x in i]
          ['I1']
          >>> list(i)
          []
        N(    (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR`   õ  s    c         C   s   |  j  S(   N(   RG   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getBases  s    c         C   s   |  | k p | j  |  ƒ S(   s   Same interface or extends?(   Rd   (   R   t   other(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   isEqualOrExtendedBy	  s    c         C   s_   | s |  j  j ƒ  S|  j  j ƒ  } x0 |  j D]% } | j t j | j | ƒ ƒ ƒ q, W| j ƒ  S(   s4   Return the attribute names defined by the interface.(   Rw   R%   t   copyRG   t   updatet   dictt   fromkeyst   names(   R   t   allt   rRb   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRƒ     s    #c         C   s   t  |  j d t ƒ ƒ S(   NR„   (   t   iterRƒ   Rn   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __iter__  s    c         C   sp   | s |  j  j ƒ  Si  } x: |  j d d d … D]" } | j t | j | ƒ ƒ ƒ q0 W| j |  j  ƒ | j ƒ  S(   s=   Return attribute names and descriptions defined by interface.Niÿÿÿÿ(   Rw   Rt   RG   R€   R   t   namesAndDescriptions(   R   R„   R…   Rb   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRˆ     s     c         C   s/   |  j  | ƒ } | d k	 r | St | ƒ ‚ d S(   s4   Return the attribute description for the given name.N(   R"   R   RK   (   R   Rh   R…   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getDescriptionFor)  s    c         C   s   |  j  | ƒ d  k	 S(   N(   R"   R   (   R   Rh   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __contains__3  s    c         C   s   |  j  j | ƒ S(   N(   Rw   R"   (   R   Rh   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRg   6  s    c         C   s   |  j  | | ƒ S(   N(   R"   (   R   Rh   R#   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   queryDescriptionFor9  s    c         B   sR   e  |  d ƒ r |  j Si  } d |  j | U| |  j } |  j | ƒ | |  _ | S(   s6   Return a defered class corresponding to the interface.t	   _deferreds   class %s: pass(   t   hasattrRŒ   R   t   _InterfaceClass__d(   R   t   klass(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   deferred<  s     	c         C   sÇ   x] |  j  d g  ƒ D]I } y | | ƒ Wq t k
 r[ } | d k rK ‚  q\ | j | ƒ q Xq WxK |  j D]@ } y | j | | ƒ Wqj t k
 r© | d k rª ‚  qª qj Xqj W| rÃ t | ƒ ‚ n  d S(   s&   validate object to defined invariants.R   N(   R$   R   R   R   RG   t   validateInvariants(   R   R;   t   errorsR   t   eRb   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR‘   J  s    c         C   s   d S(   s   Retrieve a named interface.N(   R   (   R   R,   Rh   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   _getInterface]  s    c         C   sv   xN |  j  j ƒ  D]= \ } } t | t ƒ r | | j k r t | | | ƒ q q Wx |  j D] } | j | ƒ q[ Wd  S(   N(   Rw   Rt   RY   t   MethodRN   t   setattrRG   RŽ   (   R   R   t   kt   vRP   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __da  s
    c         C   sn   y |  j  SWn\ t k
 ri |  j } |  j } | rF d | | f } n  d |  j j | f } | |  _  | SXd  S(   Ns   %s.%ss   <%s %s>(   t   _v_reprRT   R   R(   t	   __class__(   R   Rh   t   mR…   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __repr__i  s    			c         C   sE   y | |  ƒ SWn0 t  k
 r@ t j ƒ  d j d  k	 rA ‚  qA n Xd  S(   Ni   (   R:   R   t   exc_infot   tb_nextR   (   R   R=   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR7   u  s    
c         C   s   |  j  S(   N(   R   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt
   __reduce__ˆ  s    c         C   s¤   | | k r d S| d k r  d S| d k r0 d St | d d ƒ t t | d d ƒ d d ƒ f } t | d d ƒ t t | d d ƒ d d ƒ f } | | k | | k  S(   sú  Make interfaces sortable

        TODO: It would ne nice if:

           More specific interfaces should sort before less specific ones.
           Otherwise, sort on name and module.

           But this is too complicated, and we're going to punt on it
           for now.

        For now, sort on interface and module name.

        None is treated as a pseudo interface that implies the loosest
        contact possible, no contract. For that reason, all interfaces
        sort before None.

        i    i   iÿÿÿÿR   R   R(   N(   R   R6   (   R   t   o1t   o2t   n1t   n2(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __cmp‹  s    !!c         C   s   |  j  |  | ƒ } | d k  S(   Ni    (   t   _InterfaceClass__cmp(   R   R}   t   c(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __lt__°  s    c         C   s   |  j  |  | ƒ } | d k S(   Ni    (   R¦   (   R   R}   R§   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   __gt__µ  s    (    N(   R   R(   R   R   R   R`   R|   R~   t   FalseRƒ   R‡   Rˆ   R‰   t   __getitem__RŠ   Rg   R‹   R   R‘   R”   RŽ   R   R7   R    R¦   R¨   R©   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRZ   ¬  s0   	@														%	RV   R(   s   zope.interfaceRr   c           B   s   e  Z d  Z d Z RS(   s   Attribute descriptions
    N(   R   R(   R   R   R0   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRr   ½  s   R•   c           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   sŽ   Method interfaces

    The idea here is that you have objects that describe methods.
    This provides an opportunity for rich meta-data.
    c         O   s   t  |  j |  j ƒ ‚ d  S(   N(   t   BrokenImplementationR0   R   (   R   t   argst   kw(    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR2   Õ  s    c         C   s6   i |  j  d 6|  j d 6|  j d 6|  j d 6|  j d 6S(   Nt
   positionalt   requiredt   optionalt   varargst   kwargs(   R¯   R°   R±   R²   R³   (   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getSignatureInfoØ  s
    


c         C   s¬   g  } xR |  j  D]G } | j | ƒ | |  j j ƒ  k r | d c d |  j | 7<q q W|  j r{ | j d |  j ƒ n  |  j r› | j d |  j ƒ n  d d j | ƒ S(   Niÿÿÿÿt   =t   *s   **s   (%s)s   , (   R¯   R   R±   R%   R²   R³   t   join(   R   t   sigR˜   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   getSignatureStringà  s    #		(   R   R(   R   R2   R´   R¹   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyR•   É  s   		i    c         C   se  | p |  j  } t | |  j ƒ } |  j p- d } |  j } | j | } | j | } i  }	 | t | ƒ }
 |
 d k  r‰ | |
 } d }
 n  |	 j t	 t
 | |
 | ƒ ƒ ƒ | |  | _ | |
  | _ |	 | _ | } | j t @rù | | | _ | d } n	 d  | _ | j t @r| | | _ n	 d  | _ | | _ x- |  j j ƒ  D] \ } } | j | | ƒ qAW| S(   Ni    i   (    (   R   R•   R   t   func_defaultst	   func_codet   co_argcountt   co_varnamest   lenR€   R   t   zipR¯   R°   R±   t   co_flagst
   CO_VARARGSR²   R   t   CO_VARKEYWORDSR³   R0   RN   Rt   R'   (   t   funcR0   t   imlevelRh   t   methodt   defaultst   codet   naRƒ   t   optt   nrt   argnoR   R   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyRu   î  s6    		 				c         C   s"   |  j  } t | | d d d | ƒS(   NRÄ   i   Rh   (   t   im_funcRu   (   t   methR0   Rh   RÃ   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt
   fromMethod  s    	c          C   sˆ   d d l  m }  d d l m } |  t | ƒ d d l m } |  t | ƒ d d l m } |  t | ƒ d d l m	 } |  t
 | ƒ d  S(   Niÿÿÿÿ(   t   classImplements(   t
   IAttribute(   t   IMethod(   t
   IInterface(   t   ISpecification(   t   zope.interface.declarationsRÏ   t   zope.interface.interfacesRÐ   Rr   RÑ   R•   RÒ   RZ   RÓ   RB   (   RÏ   RÐ   RÑ   RÒ   RÓ   (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   _wire!  s    (   R.   (   R*   (   Rv   (   R¬   ()   R   t
   __future__R    R   t   typesR   RC   t   zope.interface.exceptionsR   t   zope.interface.roR   RÁ   RÂ   R
   t   objectR   R   R   R   R)   R3   t   _zope_interface_coptimizationst   ImportErrorR9   R4   RA   R?   RB   RZ   RV   Rr   R•   R   Ru   RÎ   RÖ   RÔ   R.   R*   Rv   R¬   (    (    (    s<   /usr/lib/python2.7/dist-packages/zope/interface/interface.pyt   <module>   sX   			*H	"Óÿ %-	