File: //usr/lib/python3.5/__pycache__/abc.cpython-35.pyc
Füƒa´! ã @ s£ d Z d d l m Z d d „ Z Gd d „ d e ƒ Z Gd d „ d e ƒ Z Gd d
„ d
e ƒ Z Gd d „ d e
ƒ Z Gd
d „ d d e ƒZ d d „ Z
d S)z3Abstract Base Classes (ABCs) according to PEP 3119.é )ÚWeakSetc C s
d | _ | S)aÞ 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)Ú__isabstractmethod__)Úfuncobj© r ú/usr/lib/python3.5/abc.pyÚabstractmethod s r c s. e Z d Z d Z d Z ‡ f d d † Z ‡ S)ÚabstractclassmethodaO
A decorator indicating abstract classmethods.
Similar to abstractmethod.
Usage:
class C(metaclass=ABCMeta):
@abstractclassmethod
def my_abstract_classmethod(cls, ...):
...
'abstractclassmethod' is deprecated. Use 'classmethod' with
'abstractmethod' instead.
Tc s d | _ t ƒ j | ƒ d S)NT)r ÚsuperÚ__init__)ÚselfÚcallable)Ú __class__r r r
0 s zabstractclassmethod.__init__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r r
r r )r
r r s r c s. e Z d Z d Z d Z ‡ f d d † Z ‡ S)ÚabstractstaticmethodaO
A decorator indicating abstract staticmethods.
Similar to abstractmethod.
Usage:
class C(metaclass=ABCMeta):
@abstractstaticmethod
def my_abstract_staticmethod(...):
...
'abstractstaticmethod' is deprecated. Use 'staticmethod' with
'abstractmethod' instead.
Tc s d | _ t ƒ j | ƒ d S)NT)r r r
)r r )r
r r r
H s zabstractstaticmethod.__init__)r r r r r r
r r )r
r r 5 s r c @ s e Z d Z d Z d Z d S)Úabstractpropertyak
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)
'abstractproperty' is deprecated. Use 'property' with 'abstractmethod'
instead.
TN)r r r r r r r r r r M s r c sa e Z d Z d Z d Z ‡ f d d † Z d d „ Z d d d „ Z d
d „ Z d d
„ Z ‡ S)ÚABCMetaai 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()).
r c sÙ t ƒ j | | | | ƒ } d d „ | j ƒ Dƒ } x_ | D]W } xN t | d t ƒ ƒ D]7 } t | | d ƒ } t | d d ƒ rW | j | ƒ qW Wq; Wt | ƒ | _ t ƒ | _ t ƒ | _
t ƒ | _ t j
| _ | S)Nc S s. h | ]$ \ } } t | d d ƒ r | ’ q S)r F)Úgetattr)Ú.0ÚnameÚvaluer r r ú <setcomp>‡ s z"ABCMeta.__new__.<locals>.<setcomp>Ú__abstractmethods__r F)r Ú__new__Úitemsr ÚsetÚaddÚ frozensetr r Ú
_abc_registryÚ
_abc_cacheÚ_abc_negative_cacher Ú_abc_invalidation_counterÚ_abc_negative_cache_version)Úmclsr ÚbasesÚ namespaceÚclsÚ abstractsÚbaser )r
r r r „ s
zABCMeta.__new__c C sl t | t ƒ s t d ƒ ‚ t | | ƒ r. | St | | ƒ rI t d ƒ ‚ | j j | ƒ t j d 7_ | S)zsRegister a virtual subclass of an ABC.
Returns the subclass, to allow usage as a class decorator.
zCan only register classesz'Refusing to create an inheritance cycleé ) Ú
isinstanceÚtypeÚ TypeErrorÚ
issubclassÚRuntimeErrorr r r r# )r( Úsubclassr r r Úregister— s zABCMeta.registerNc C s“ t d | j | j f d | ƒt d t j d | ƒxU t | j j ƒ ƒ D]>