Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wcooley/d8ce6bc40ecad9bfbf4437d390a7792f to your computer and use it in GitHub Desktop.
Save wcooley/d8ce6bc40ecad9bfbf4437d390a7792f to your computer and use it in GitHub Desktop.
GraphViz chart of abstract base classes from as of 3.6/3.7
digraph python_abcs {
graph [rankdir=BT,rank=max,label="Python 3.6/3.7 Abstract Base Classes"]
node [shape=record,nojustify=true]
edge [arrowhead=onormal]
# Rank Manipulation
{
rank=max
Container
Hashable
Callable
Awaitable
AsyncIterable
}
{
rank=same
Collection
}
# Nodes Labels
#
# For the most consistent alignment, include separator bar ("|") and
# closing brace ("}") at end of line.
#
Container [label=<{
<b>\N</b>|
|
<i>__contains__</i>}>]
Hashable [label=<{
<b>\N</b>|
|
<i>__hash__</i>}>]
Iterable [label=<{
<b>\N</b>|
|
<i>__iter__</i>}>]
Iterator [label=<{
<b>\N</b>|
__iter__|
<i>__next__</i>}>]
Reversible [label=<{
<b>\N</b>|
|
<i>__reversed__</i>}>]
Generator [label=<{
<b>\N</b>|
close<br/> __iter__<br/> __next__|
<i>send</i><br/><i>throw</i>}>]
Sized [label=<{
<b>\N</b>|
|
<i>__len__</i>}>]
Callable [label=<{
<b>\N</b>|
|
<i>__call__</i>}>]
Collection [label=<{
<b>\N</b>|
|
<i>__contains__<br/>__iter__<br/>__len__</i>}>]
Sequence [label=<{
<b>\N</b>|
__contains__<br/>__iter__<br/>__reversed__<br/>index<br/>count|
<i>__getitem__<br/>__len__</i>}>]
MutableSequence [label=<{
<b>\N</b>|
<i>Sequence</i> methods<br/>+<br/>append extend<br/>reverse<br/>pop remove<br/>__iadd__|
<i>__getitem__<br/>__setitem__<br/>__delitem__<br/>__len__<br/>insert</i>}>]
ByteString [label=<{
<b>\N</b>|
<i>Sequence</i> methods|
<i>__getitem__<br/>__len__</i>}>]
Set [label=<{
<b>\N</b>|
__le__ __lt__<br/>__eq__ __ne__<br/>__gt__ __ge__<br/>__and__ __or__<br/>__sub__ __xor__<br/>isdisjoint|
<i>__contains__<br/>__iter__<br/>__len__</i>}>]
MutableSet [label=<{
<b>\N</b>|
<i>Set</i> methods<br/>+<br/>clear pop remove<br/>__ior__ __iand__<br/>__isub__ __ixor__|
<i>__contains__<br/>__iter__<br/>__len__<br/>add<br/>discard</i>}>]
Mapping [label=<{
<b>\N</b>|
__contains__<br/>keys items<br/>values get<br/>__eq__ __ne__|
<i>__getitem__<br/>__iter__<br/>__len__</i>}>]
MutableMapping [label=<{
<b>\N</b>|
<i>Mapping</i> methods<br/>+<br/>pop popitem<br/>clear update<br/>setdefault|
<i>__getitem__<br/>__setitem__<br/>__delitem__<br/>__iter__<br/>__len__</i>}>]
MappingView [label=<{
<b>\N</b>|
__len__|
}>]
ItemsView [label=<{
<b>\N</b>|
__contains__<br/>__iter__|
}>]
KeysView [label=<{
<b>\N</b>|
__contains__<br/>__iter__|
}>]
ValuesView [label=<{
<b>\N</b>|
__contains__<br/>__iter__|
}>]
Awaitable [label=<{
<b>\N</b>|
|
<i>__await__</i>}>]
Coroutine [label=<{
<b>\N</b>|
close|
<i>send<br/>throw</i>}>]
AsyncIterable [label=<{
<b>\N</b>|
|
<i>__aiter__</i>}>]
AsyncIterator [label=<{
<b>\N</b>|
__aiter__|
<i>__anext__</i>}>]
AsyncGenerator [label=<{
<b>\N</b>|
aclose<br/>__aiter__<br/>__anext__|
<i>asend<br/>athrow</i>}>]
# Inheritance
Iterator -> Iterable
Reversible -> Iterable
Generator -> Iterator
Collection -> Sized
Collection -> Iterable
Collection -> Container
Sequence -> Reversible
Sequence -> Collection
MutableSequence -> Sequence
ByteString -> Sequence
Set -> Collection
MutableSet -> Set
Mapping -> Collection
MutableMapping -> Mapping
MappingView -> Sized
ItemsView -> MappingView
ItemsView -> Set
KeysView -> MappingView
KeysView -> Set
ValuesView -> MappingView
ValuesView -> Collection [label=" 3.7 ",decorate=true]
Coroutine -> Awaitable
AsyncIterator -> AsyncIterable
AsyncGenerator -> AsyncIterator
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment