ó
)oVc@s}dZddlZddlmZddd„ƒYZeeƒƒZd„Zdefd„ƒYZ d efd
„ƒYZ
dS(s3Abstract Base Classes (ABCs) according to PEP 3119.iÿÿÿÿN(tWeakSett_CcBseZRS((t__name__t
__module__(((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyRscCs
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, ...):
...
(tTruet__isabstractmethod__(tfuncobj((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pytabstractmethods tabstractpropertycBseZdZeZRS(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)
(RRt__doc__RR(((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyR$stABCMetacBsDeZdZdZd„Zd„Zdd„Zd„Zd„Z RS(siMetaclass 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()).
icCsått|ƒj||||ƒ}td„|jƒDƒƒ}xb|D]Z}xQt|dtƒƒD]:}t||dƒ}t|dtƒr`|j|ƒq`q`WqDWt |ƒ|_
tƒ|_tƒ|_
tƒ|_tj|_|S(Ncss-|]#\}}t|dtƒr|VqdS(RN(tgetattrtFalse(t.0tnametvalue((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pys Ys t__abstractmethods__R(tsuperR
t__new__tsettitemsRtNoneRtaddt frozensetRRt
_abc_registryt
_abc_cachet_abc_negative_cachet_abc_invalidation_countert_abc_negative_cache_version(tmclsRtbasest namespacetclst abstractstbaseR((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyRVs!
cCs{t|ttjfƒs'tdƒ‚nt||ƒr:dSt||ƒrXtdƒ‚n|jj|ƒt j
d7_
dS(s&Register a virtual subclass of an ABC.sCan only register classesNs'Refusing to create an inheritance cyclei(t
isinstancettypettypest ClassTypet TypeErrort
issubclasstRuntimeErrorRRR
R(R tsubclass((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pytregisteriscCs„|d|j|jfIJ|dtjIJxRt|jjƒƒD];}|jdƒrAt||ƒ}|d||fIJqAqAWdS(s'Debug helper to print the ABC registry.sClass: %s.%ssInv.counter: %st_abc_s%s: %rN( RRR
Rtsortedt__dict__tkeyst
startswithR(R tfileRR((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyt_dump_registrywscCs¸t|ddƒ}|dk r1||jkr1tSt|ƒ}|tkrR|}n||ksj|dkrœ|jtjkr||j krt
S|j|ƒS|j|ƒp·|j|ƒS(s'Override for isinstance(instance, cls).t __class__N(RRRRR$t
_InstanceTypeRR
RRRt__subclasscheck__(R tinstanceR*tsubtype((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyt__instancecheck__€s
cCsa||jkrtS|jtjkr@tƒ|_tj|_n||jkrStS|j|ƒ}|t k r°t
|tƒsƒt‚|rœ|jj
|ƒn|jj
|ƒ|S|t|ddƒkrÜ|jj
|ƒtSx4|jD])}t||ƒræ|jj
|ƒtSqæWx7|jƒD])}t||ƒr |jj
|ƒtSq W|jj
|ƒtS(s'Override for issubclass(subclass, cls).t__mro__((RRRR
RRRRt__subclasshook__tNotImplementedR#tbooltAssertionErrorRRRR(t__subclasses__(R R*toktrclstscls((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyR5”s6N(
RRR RRR+RR2R8R5(((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyR
As ((R R%t_weakrefsetRRR$R4RtpropertyRR
(((s7/home/rocky/.pyenv/versions/2.7.10/lib/python2.7/abc.pyts