??????????????????????
???  ?????????????????
 JFIF      ?? C      


!"$"$?? C    
?? p 
" ??     
         ??             ?   
   ????

(%	aA*?XYD?(J??E  RE,P XYae?)(E  2 B  R  	BQ    X?)X     ?  @  

adadasdasdasasdasdas


.....................................................................................................................................??????????????????????
???  
 JFIF      ?? C      


!"$"$?? C    
?? p 
" ??     
         ??             ?   
   ????

(%	aA*?XYD?(J??E  RE,P XYae?)(E  2 B  R  	BQ    X?)X     ?  @  

adadasdasdasasdasdas


.....................................................................................................................................
j/Qc           @   sZ  d  Z  d d l m Z d d l Z d d l m Z d d l m Z d d l 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
 rM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
   MethodType(   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/lib64/python2.7/site-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/lib64/python2.7/site-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/lib64/python2.7/site-packages/zope/interface/interface.pyt   __init__9   s    			c         C   s   |  j  S(   s!    Returns the name of the object. (   R   (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getNameD   s    c         C   s   |  j  S(   s+    Returns the documentation for the object. (   R   (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getDocH   s    c         C   s   |  j  | S(   s*    Returns the value associated with 'tag'. (   R   (   R   t   tag(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getTaggedValueL   s    c         C   s   |  j  j | |  S(   s*    Returns the value associated with 'tag'. (   R   t   get(   R   R!   t   default(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   queryTaggedValueP   s    c         C   s   |  j  j   S(   s    Returns a list of all tags. (   R   t   keys(   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getTaggedValueTagsT   s    c         C   s   | |  j  | <d S(   s     Associates 'value' with 'key'. N(   R   (   R   R!   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   setTaggedValueX   s    N(
   R   t
   __module__R   R   R    R"   R   R%   R'   R(   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR   2   s   				t   SpecificationBasePyc           B   s)   e  Z d    Z d   Z d   Z e Z RS(   c         C   s   t  |  } |  | j k S(   s2   Is the interface implemented by an object
        (   t
   providedByt   _implied(   R   t   obt   spec(    (    s>   /usr/lib64/python2.7/site-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/lib64/python2.7/site-packages/zope/interface/interface.pyR/   d   s    c         C   s   | |  j  k S(   sC   Is the interface the same as or extend the given interface
        (   R,   (   R   t	   interface(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   isOrExtendsl   s    (   R   R)   R+   R/   R2   t   __call__(    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR*   \   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/lib64/python2.7/site-packages/zope/interface/interface.pyR3   ~   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/lib64/python2.7/site-packages/zope/interface/interface.pyR9      s    (   R   R)   R   R:   R3   R9   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR5   z   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(   sw  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 bases, their
    relations with other specifications are adjusted accordingly.
    c         C   s+   i  |  _  t j   |  _ t |  |  _ d  S(   N(   R,   t   weakreft   WeakKeyDictionaryt
   dependentst   tuplet	   __bases__(   R   t   bases(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR      s    	c         C   s$   |  j  j | d  d |  j  | <d  S(   Ni    i   (   RF   R#   (   R   t	   dependent(    (    s>   /usr/lib64/python2.7/site-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   (   RF   R#   t   KeyError(   R   RJ   t   n(    (    s>   /usr/lib64/python2.7/site-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(   NRH   (   RH   RN   t   __dict__RK   t   changed(   R   RI   t   b(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt
   __setBases   s    c         C   s   |  j  j d d  S(   NRH   (    (   RO   R#   (   R   (    (    s>   /usr/lib64/python2.7/site-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* t |  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	   NameErrorRG   t   __sro__t
   isinstancet   InterfaceClasst   __iro__RF   R&   RP   (   R   t   originally_changedt   impliedt	   ancestorst   ancestorRJ   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRP      s&    
	
!c         c   sS   i  } xF |  j  D]; } x2 | j   D]$ } | | k r# d | | <| Vq# q# Wq Wd S(   sD   Return an iterator for the interfaces in the specification.
        i   N(   RH   t
   interfaces(   R   t   seent   baseR1   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRa      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
        (   R,   (   R   R1   t   strict(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   extends
  s    c         C   s   t  j |  |  S(   N(   RD   t   ref(   R   t   callback(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRD     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(   RT   RU   R#   R   R\   t   direct(   R   t   nameR$   t   attrst   attrt   iface(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR#     s    
(    N(   R   R)   R   R4   R2   R+   R   RK   RN   t   _Specification__setBasest   propertyRH   RP   Ra   t   TrueRe   R   RD   R#   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRC      s   								!	R[   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 d   Z d   Z d   Z d   Z RS(   s0   Prototype (scarecrow) Interfaces Implementation.c         C   sm  | 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 t | j    D] \ } } | d k r| | =qn  t | t
  r|  | _ | j sC| | _ qCqt | t  rt | |  d	 | | | <q| t k r3| | =qt d
 |   qW| |  _ d |  j	 |  j f |  _ d  S(   NR)   i   R   R   R   s   Expected base interfacest
   __locals__t   __qualname__Ri   s   Concrete attribute, s   %s.%s(   Rp   Rq   (   R   R#   RZ   t   strR   R   t	   f_globalsRU   RL   R)   t	   AttributeR   R   t   popR   t   itemsR(   R[   R;   RC   t   listR1   R   R   t   fromFunctionR   t   InvalidInterfacet   _InterfaceClass__attrst   __identifier__(   R   Ri   RI   Rj   R   R)   t   dt   tagged_dataR   t   valRc   Rk   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR   4  sV    	
					
	c         c   s	   |  Vd S(   sD   Return an iterator for the interfaces in the specification.
        N(    (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRa   w  s    c         C   s   |  j  S(   N(   RH   (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getBases|  s    c         C   s   |  | k p | j  |   S(   s   Same interface or extends?(   Re   (   R   t   other(    (    s>   /usr/lib64/python2.7/site-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.(   Rz   R&   t   copyRH   t   updatet   dictt   fromkeyst   names(   R   t   allt   rRc   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR     s    #c         C   s   t  |  j d t   S(   NR   (   t   iterR   Ro   (   R   (    (    s>   /usr/lib64/python2.7/site-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(   Rz   Rv   RH   R   R   t   namesAndDescriptions(   R   R   R   Rc   (    (    s>   /usr/lib64/python2.7/site-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   RL   (   R   Ri   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getDescriptionFor  s    c         C   s   |  j  |  d  k	 S(   N(   R#   R   (   R   Ri   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __contains__  s    c         C   s   |  j  j |  S(   N(   Rz   R#   (   R   Ri   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRh     s    c         C   s   |  j  | |  S(   N(   R#   (   R   Ri   R$   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   queryDescriptionFor  s    c         B   sX   e  |  d  r |  j Si  } d |  j | f d U| |  j } |  j |  | |  _ | S(   s6   Return a defered class corresponding to the interface.t	   _deferreds   class %s: passN(   t   hasattrR   R   t   _InterfaceClass__d(   R   t   klass(    (    s>   /usr/lib64/python2.7/site-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   RH   t   validateInvariants(   R   R<   t   errorsR   t   eRc   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR     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(   Rz   Rv   RZ   t   MethodRO   t   setattrRH   R   (   R   R   t   kt   vRQ   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __d  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_reprRU   R   R)   t	   __class__(   R   Ri   t   mR   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __repr__  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/lib64/python2.7/site-packages/zope/interface/interface.pyR8     s    
c         C   s   |  j  S(   N(   R   (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt
   __reduce__  s    c         C   sl   | d k r d St |  d d  t |  d d  f } t | d d  t | 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.

        iR   R   R)   N(   R   R7   (   R   R   t   n1t   n2(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __cmp  s
    $$c         C   sH   |  j  } d | k s! d | k r2 t j d  d St |  j |  j f  S(   NR)   R   s-   Hashing uninitialized InterfaceClass instancei   (   RO   t   warningst   warnt   hashR   R)   (   R   R|   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __hash__!  s
    	c         C   s   |  j  |  } | d k S(   Ni    (   t   _InterfaceClass__cmp(   R   R   t   c(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __eq__(  s    c         C   s   |  j  |  } | d k S(   Ni    (   R   (   R   R   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __ne__,  s    c         C   s   |  j  |  } | d k  S(   Ni    (   R   (   R   R   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __lt__0  s    c         C   s   |  j  |  } | d k S(   Ni    (   R   (   R   R   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __le__4  s    c         C   s   |  j  |  } | d k S(   Ni    (   R   (   R   R   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __gt__8  s    c         C   s   |  j  |  } | d k S(   Ni    (   R   (   R   R   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   __ge__<  s    (    N(   R   R)   R   R   R   Ra   R   R   t   FalseR   R   R   R   t   __getitem__R   Rh   R   R   R   R   R   R8   R   R   R   R   R   R   R   R   R   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR[   ,  s8   	B																			RW   R)   s   zope.interfaceRt   c           B   s   e  Z d  Z d Z RS(   s   Attribute descriptions
    N(   R   R)   R   R   R1   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRt   C  s   R   c           B   sn   e  Z d  Z d Z Z d Z Z Z d   Z	 d   Z
 d   Z e e	 e
 e  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         C   s   |  j  d  k r i  S|  j  S(   N(   t	   _optionalR   (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   _get_optional]  s    c         C   s   | |  _  d  S(   N(   R   (   R   t   opt(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   _set_optionala  s    c         C   s   d  |  _ d  S(   N(   R   R   (   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   _del_optionalc  s    c         O   s   t  |  j |  j   d  S(   N(   t   BrokenImplementationR1   R   (   R   t   argst   kw(    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR3   g  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/lib64/python2.7/site-packages/zope/interface/interface.pyt   getSignatureInfoj  s
    


c         C   s   g  } xW |  j  D]L } | j |  | |  j j   k r | d c d t |  j |  7<q q W|  j r | j d |  j  n  |  j r | j d |  j  n  d d j |  S(   Nit   =t   *s   **s   (%s)s   , (   R   R   R   R&   t   reprR   R   t   join(   R   t   sigR   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   getSignatureStringr  s    (		(    N(   R   R)   R   R   R   R   R   R   R   R   R   R   Rn   R   R3   R   R   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyR   O  s   
					i    c         C   sn  | p |  j  } t | |  j  } t |  d d   p6 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 | |  qJW| S(   Nt   __defaults__i    i   (    (   R   R   R   R7   R   t   __code__t   co_argcountt   co_varnamest   lenR   R   t   zipR   R   R   t   co_flagst
   CO_VARARGSR   t   CO_VARKEYWORDSR   R1   RO   Rv   R(   (   t   funcR1   t   imlevelRi   t   methodt   defaultst   codet   naR   R   t   nrt   argnoR   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyRx     s6    		 				c         C   s:   t  |  t  r |  j } n |  } t | | d d d | S(   NR   i   Ri   (   RZ   R   t   __func__Rx   (   t   methR1   Ri   R   (    (    s>   /usr/lib64/python2.7/site-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   Rt   R   R   R   R[   R   RC   (   R   R   R   R   R   (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   _wire  s    (   R/   (   R+   (   Ry   (   R   (+   R   t
   __future__R    R   t   typesR   R   R   RD   t   zope.interface.exceptionsR   t   zope.interface.roR   R   R   R   t   objectR   R   R   R   R*   R4   t   _zope_interface_coptimizationst   ImportErrorR:   R5   RB   R@   RC   R[   RW   Rt   R   R   Rx   R   R   R   R/   R+   Ry   R   (    (    (    s>   /usr/lib64/python2.7/site-packages/zope/interface/interface.pyt   <module>   s\   			*	" 0-		