Ñò
#8Zc           @   sa   d  Z  d d	 d     YZ e e    Z d   Z d e f d     YZ d e f d     YZ d S(
   s3   Abstract Base Classes (ABCs) according to PEP 3119.t   _Cc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s   /usr/lib/python2.6/abc.pyR       s    c         C   s   t  |  _ |  S(   sï  A decorator indicating abstract methods.

    Requires that the metaclass is ABCMeta or derived from it.  A
    class that has a metaclass derived from ABCMeta cannot be
    instantiated unless all of its abstract methods are overridden.
    The abstract methods can be called using any of the normal
    'super' call mechanisms.

    Usage:

        class C:
            __metaclass__ = ABCMeta
            @abstractmethod
            def my_abstract_method(self, ...):
                ...
    (   t   Truet   __isabstractmethod__(   t   funcobj(    (    s   /usr/lib/python2.6/abc.pyt   abstractmethod   s    	t   abstractpropertyc           B   s   e  Z d  Z e Z RS(   s/  A decorator indicating abstract properties.

    Requires that the metaclass is ABCMeta or derived from it.  A
    class that has a metaclass derived from ABCMeta cannot be
    instantiated unless all of its abstract properties are overridden.
    The abstract properties can be called using any of the normal
    'super' call mechanisms.

    Usage:

        class C:
            __metaclass__ = ABCMeta
            @abstractproperty
            def my_abstract_property(self):
                ...

    This defines a read-only property; you can also define a read-write
    abstract property using the 'long' form of property declaration:

        class C:
            __metaclass__ = ABCMeta
            def getx(self): ...
            def setx(self, value): ...
            x = abstractproperty(getx, setx)
    (   R   R   t   __doc__R   R   (    (    (    s   /usr/lib/python2.6/abc.pyR   !   s   t   ABCMetac           B   sD   e  Z d  Z d Z d   Z d   Z d d  Z d   Z d   Z	 RS(   si  Metaclass for defining Abstract Base Classes (ABCs).

    Use this metaclass to create an ABC.  An ABC can be subclassed
    directly, and then acts as a mix-in class.  You can also register
    unrelated concrete classes (even built-in classes) and unrelated
    ABCs as 'virtual subclasses' -- these and their descendants will
    be considered subclasses of the registering ABC by the built-in
    issubclass() function, but the registering ABC won't show up in
    their MRO (Method Resolution Order) nor will method
    implementations defined by the registering ABC be callable (not
    even via super()).

    i    c         C   sç   t  t |   i |  | | |  } t d   | i   D  } xd | D]\ } xS t | d t    D]< } t | | d   } t | d t  o | i |  q` q` WqD Wt	 |  | _
 t   | _ t   | _ t   | _ t i | _ | S(   Nc         s   s6   x/ |  ]( \ } } t  | d  t  o	 | Vq q Wd S(   R   N(   t   getattrt   False(   t   .0t   namet   value(    (    s   /usr/lib/python2.6/abc.pys	   <genexpr>V   s   		t   __abstractmethods__R   (   t   superR	   t   __new__t   sett   itemsR
   t   NoneR   t   addt	   frozensetR   t   _abc_registryt
   _abc_cachet   _abc_negative_cachet   _abc_invalidation_countert   _abc_negative_cache_version(   t   mclsR   t   basest	   namespacet   clst	   abstractst   baseR   (    (    s   /usr/lib/python2.6/abc.pyR   S   s     !	  c         C   sx   t  |  t  p t d   n t | |   o d St |  |  o t d   n |  i i |  t i d 7_ d S(   s&   Register a virtual subclass of an ABC.s   Can only register classesNs'   Refusing to create an inheritance cyclei   (	   t
   isinstancet   typet	   TypeErrort
   issubclasst   RuntimeErrorR   R   R	   R   (   R   t   subclass(    (    s   /usr/lib/python2.6/abc.pyt   registerf   s    c         C   s   | d |  i  |  i f IJ| d t i IJxT t |  i i    D]= } | i d  o' t |  |  } | d | | f IJqA qA Wd S(   s'   Debug helper to print the ABC registry.s   Class: %s.%ss   Inv.counter: %st   _abc_s   %s: %rN(	   R   R   R	   R   t   sortedt   __dict__t   keyst
   startswithR
   (   R   t   fileR   R   (    (    s   /usr/lib/python2.6/abc.pyt   _dump_registryt   s     c         C   s·   t  | d d  } | |  i j o t St |  } | t j o
 | } n | | j p | d j o6 |  i t i j o | |  i	 j o t
 S|  i |  S|  i |  p |  i |  S(   s'   Override for isinstance(instance, cls).t	   __class__N(   R
   R   R   R   R#   t   _InstanceTypeR   R	   R   R   R   t   __subclasscheck__(   R   t   instanceR'   t   subtype(    (    s   /usr/lib/python2.6/abc.pyt   __instancecheck__}   s    
c         C   ss  | |  i  j o t S|  i t i j  o t   |  _ t i |  _ n | |  i j o t S|  i |  } | t	 j	 oG t
 | t  p t  | o |  i  i |  n |  i i |  | S|  t | d d  j o |  i  i |  t Sx6 |  i D]+ } t | |  o |  i  i |  t Sqô Wx9 |  i   D]+ } t | |  o |  i  i |  t Sq0W|  i i |  t S(   s'   Override for issubclass(subclass, cls).t   __mro__(    (   R   R   R   R	   R   R   R   R   t   __subclasshook__t   NotImplementedR"   t   boolt   AssertionErrorR   R
   R   R%   t   __subclasses__(   R   R'   t   okt   rclst   scls(    (    s   /usr/lib/python2.6/abc.pyR2      s:    
 	 	N(
   R   R   R   R   R   R(   R   R/   R5   R2   (    (    (    s   /usr/lib/python2.6/abc.pyR	   >   s   				N(    (   R   R    R#   R1   R   t   propertyR   R	   (    (    (    s   /usr/lib/python2.6/abc.pyt   <module>   s
   	