Uqbar

https://img.shields.io/badge/code%20style-black-000000.svg

Uqbar is a toolkit for building docs, graphs and more.

digraph InheritanceGraph { graph [bgcolor=transparent, color=lightsteelblue2, fontname=Arial, fontsize=10, outputorder=edgesfirst, overlap=prism, penwidth=2, rankdir=LR, splines=spline, style="dashed, rounded", truecolor=true ]; node [colorscheme=pastel19, fontname=Arial, fontsize=10, height=0, penwidth=2, shape=box, style="filled, rounded", width=0 ]; edge [color=lightslategrey, penwidth=1 ]; subgraph cluster_builtins { graph [label=builtins]; node [color=1]; "builtins.BaseException" [URL="https://docs.python.org/3/library/exceptions.html#BaseException", color=1, label="Base\nException", target=_top]; "builtins.Exception" [URL="https://docs.python.org/3/library/exceptions.html#Exception", color=1, label=Exception, target=_top]; "builtins.BaseException" -> "builtins.Exception" [minlen=1]; "builtins.int" [URL="https://docs.python.org/3/library/functions.html#int", color=1, label=int, target=_top]; "builtins.object" [URL="https://docs.python.org/3/library/functions.html#object", color=1, label=object, target=_top]; "builtins.object" -> "builtins.BaseException" [minlen=1]; "builtins.object" -> "builtins.int" [minlen=2]; } subgraph cluster_code { graph [label=code]; node [color=2]; "code.InteractiveConsole" [URL="https://docs.python.org/3/library/code.html#code.InteractiveConsole", color=2, label="Interactive\nConsole", target=_top]; "code.InteractiveInterpreter" [URL="https://docs.python.org/3/library/code.html#code.InteractiveInterpreter", color=2, label="Interactive\nInterpreter", target=_top]; "code.InteractiveInterpreter" -> "code.InteractiveConsole" [minlen=1]; } subgraph "cluster_collections.abc" { graph [label="collections.abc"]; node [color=3]; "collections.abc.Collection" [URL="https://docs.python.org/3/library/collections.abc.html#collections.abc.Collection", color=3, label=Collection, shape=oval, style=bold, target=_top]; "collections.abc.Mapping" [URL="https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping", color=3, label=Mapping, shape=oval, style=bold, target=_top]; "collections.abc.Collection" -> "collections.abc.Mapping" [minlen=1]; "collections.abc.Container" [URL="https://docs.python.org/3/library/collections.abc.html#collections.abc.Container", color=3, label=Container, shape=oval, style=bold, target=_top]; "collections.abc.Container" -> "collections.abc.Collection"; "collections.abc.Iterable" [URL="https://docs.python.org/3/library/collections.abc.html#collections.abc.Iterable", color=3, label=Iterable, shape=oval, style=bold, target=_top]; "collections.abc.Iterable" -> "collections.abc.Collection"; "collections.abc.MutableMapping" [URL="https://docs.python.org/3/library/collections.abc.html#collections.abc.MutableMapping", color=3, label="Mutable\nMapping", shape=oval, style=bold, target=_top]; "collections.abc.Mapping" -> "collections.abc.MutableMapping" [minlen=1]; "collections.abc.Sized" [URL="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sized", color=3, label=Sized, shape=oval, style=bold, target=_top]; "collections.abc.Sized" -> "collections.abc.Collection"; } subgraph "cluster_docutils.nodes" { graph [label="docutils.nodes"]; node [color=4]; "docutils.nodes.Body" [color=4, label=Body]; "docutils.nodes.General" [color=4, label=General]; "docutils.nodes.Body" -> "docutils.nodes.General"; "docutils.nodes.Element" [color=4, label=Element]; "docutils.nodes.Node" [color=4, label="Node"]; "docutils.nodes.Node" -> "docutils.nodes.Element"; } subgraph "cluster_docutils.parsers.rst" { graph [label="docutils.parsers.rst"]; node [color=5]; "docutils.parsers.rst.Directive" [URL="https://www.sphinx-doc.org/en/master/extdev/markupapi.html#docutils.parsers.rst.Directive", color=5, label=Directive, target=_top]; } subgraph cluster_enum { graph [label=enum]; node [color=6]; "enum.Enum" [URL="https://docs.python.org/3/library/enum.html#enum.Enum", color=6, label=Enum, target=_top]; "enum.ReprEnum" [URL="https://docs.python.org/3/library/enum.html#enum.ReprEnum", color=6, label="Repr\nEnum", target=_top]; "enum.Enum" -> "enum.ReprEnum" [minlen=1]; "enum.IntEnum" [URL="https://docs.python.org/3/library/enum.html#enum.IntEnum", color=6, label="Int\nEnum", target=_top]; "enum.ReprEnum" -> "enum.IntEnum"; } subgraph "cluster_uqbar.apis.builders" { graph [label="uqbar.apis.builders"]; node [color=7]; "uqbar.apis.builders.APIBuilder" [color=7, label=APIBuilder]; } subgraph "cluster_uqbar.apis.documenters" { graph [label="uqbar.apis.documenters"]; node [color=8]; "uqbar.apis.documenters.ClassDocumenter" [color=8, label="Class\nDocumenter"]; "uqbar.apis.documenters.FunctionDocumenter" [color=8, label="Function\nDocumenter"]; "uqbar.apis.documenters.MemberDocumenter" [color=8, label="Member\nDocumenter"]; "uqbar.apis.documenters.MemberDocumenter" -> "uqbar.apis.documenters.ClassDocumenter" [minlen=1]; "uqbar.apis.documenters.MemberDocumenter" -> "uqbar.apis.documenters.FunctionDocumenter" [minlen=2]; "uqbar.apis.documenters.ModuleDocumenter" [color=8, label="Module\nDocumenter"]; "uqbar.apis.documenters.RootDocumenter" [color=8, label="Root\nDocumenter"]; } subgraph "cluster_uqbar.apis.dummy" { graph [label="uqbar.apis.dummy"]; node [color=9]; "uqbar.apis.dummy.MyChildClass" [color=9, label="My\nChild\nClass"]; "uqbar.apis.dummy.MyParentClass" [color=9, label="My\nParent\nClass"]; "uqbar.apis.dummy.MyParentClass" -> "uqbar.apis.dummy.MyChildClass" [minlen=1]; } subgraph "cluster_uqbar.apis.graphs" { graph [label="uqbar.apis.graphs"]; node [color=1]; "uqbar.apis.graphs.InheritanceGraph" [color=1, label="Inheritance\nGraph"]; } subgraph "cluster_uqbar.apis.nodes" { graph [label="uqbar.apis.nodes"]; node [color=2]; "uqbar.apis.nodes.ModuleNode" [color=2, label="Module\nNode"]; "uqbar.apis.nodes.PackageNode" [color=2, label="Package\nNode"]; } subgraph "cluster_uqbar.apis.summarizers" { graph [label="uqbar.apis.summarizers"]; node [color=3]; "uqbar.apis.summarizers.ImmaterialClassDocumenter" [color=3, label="Immaterial\nClass\nDocumenter"]; "uqbar.apis.summarizers.ImmaterialModuleDocumenter" [color=3, label="Immaterial\nModule\nDocumenter"]; "uqbar.apis.summarizers.SummarizingClassDocumenter" [color=3, label="Summarizing\nClass\nDocumenter"]; "uqbar.apis.summarizers.SummarizingClassDocumenter" -> "uqbar.apis.summarizers.ImmaterialClassDocumenter" [minlen=1]; "uqbar.apis.summarizers.SummarizingModuleDocumenter" [color=3, label="Summarizing\nModule\nDocumenter"]; "uqbar.apis.summarizers.SummarizingRootDocumenter" [color=3, label="Summarizing\nRoot\nDocumenter"]; } subgraph "cluster_uqbar.book.console" { graph [label="uqbar.book.console"]; node [color=4]; "uqbar.book.console.Console" [color=4, label=Console]; "uqbar.book.console.ConsoleError" [color=4, label="Console\nError"]; "uqbar.book.console.ConsoleInput" [color=4, label="Console\nInput"]; "uqbar.book.console.ConsoleOutput" [color=4, label="Console\nOutput"]; "uqbar.book.console.MonkeyPatch" [color=4, label="Monkey\nPatch"]; } subgraph "cluster_uqbar.book.extensions" { graph [label="uqbar.book.extensions"]; node [color=5]; "uqbar.book.extensions.Extension" [color=5, label=Extension]; "uqbar.book.extensions.GraphExtension" [color=5, label="Graph\nExtension"]; "uqbar.book.extensions.Extension" -> "uqbar.book.extensions.GraphExtension" [minlen=1]; } subgraph "cluster_uqbar.book.sphinx" { graph [label="uqbar.book.sphinx"]; node [color=6]; "uqbar.book.sphinx.UqbarBookDefaultsDirective" [color=6, label="Uqbar\nBook\nDefaults\nDirective"]; "uqbar.book.sphinx.UqbarBookDirective" [color=6, label="Uqbar\nBook\nDirective"]; "uqbar.book.sphinx.UqbarBookImportDirective" [color=6, label="Uqbar\nBook\nImport\nDirective"]; "uqbar.book.sphinx.uqbar_book_defaults_block" [color=6, label="uqbar\nbook\ndefaults\nblock"]; "uqbar.book.sphinx.uqbar_book_import_block" [color=6, label="uqbar\nbook\nimport\nblock"]; } subgraph "cluster_uqbar.containers.dependency_graph" { graph [label="uqbar.containers.dependency_graph"]; node [color=7]; "uqbar.containers.dependency_graph.DependencyGraph" [color=7, label="Dependency\nGraph"]; } subgraph "cluster_uqbar.containers.unique_tree" { graph [label="uqbar.containers.unique_tree"]; node [color=8]; "uqbar.containers.unique_tree.UniqueTreeContainer" [color=8, label="Unique\nTree\nContainer"]; "uqbar.containers.unique_tree.UniqueTreeDict" [color=8, label="Unique\nTree\nDict"]; "uqbar.containers.unique_tree.UniqueTreeContainer" -> "uqbar.containers.unique_tree.UniqueTreeDict" [minlen=1]; "uqbar.containers.unique_tree.UniqueTreeList" [color=8, label="Unique\nTree\nList"]; "uqbar.containers.unique_tree.UniqueTreeContainer" -> "uqbar.containers.unique_tree.UniqueTreeList"; "uqbar.containers.unique_tree.UniqueTreeSet" [color=8, label="Unique\nTree\nSet"]; "uqbar.containers.unique_tree.UniqueTreeContainer" -> "uqbar.containers.unique_tree.UniqueTreeSet" [minlen=2]; "uqbar.containers.unique_tree.UniqueTreeTuple" [color=8, label="Unique\nTree\nTuple"]; "uqbar.containers.unique_tree.UniqueTreeContainer" -> "uqbar.containers.unique_tree.UniqueTreeTuple" [minlen=3]; "uqbar.containers.unique_tree.UniqueTreeNode" [color=8, label="Unique\nTree\nNode"]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.containers.unique_tree.UniqueTreeContainer"; } subgraph "cluster_uqbar.enums" { graph [label="uqbar.enums"]; node [color=9]; "uqbar.enums.IntEnumeration" [color=9, label="Int\nEnumeration"]; "uqbar.enums.StrictEnumeration" [color=9, label="Strict\nEnumeration"]; } subgraph "cluster_uqbar.graphs.attrs" { graph [label="uqbar.graphs.attrs"]; node [color=1]; "uqbar.graphs.attrs.Attributes" [color=1, label=Attributes]; } subgraph "cluster_uqbar.graphs.core" { graph [label="uqbar.graphs.core"]; node [color=2]; "uqbar.graphs.core.Attachable" [color=2, label=Attachable]; "uqbar.graphs.core.Edge" [color=2, label="Edge"]; "uqbar.graphs.core.Graph" [color=2, label="Graph"]; "uqbar.graphs.core.Node" [color=2, label="Node"]; } subgraph "cluster_uqbar.graphs.graphers" { graph [label="uqbar.graphs.graphers"]; node [color=3]; "uqbar.graphs.graphers.Grapher" [color=3, label=Grapher]; } subgraph "cluster_uqbar.graphs.html" { graph [label="uqbar.graphs.html"]; node [color=4]; "uqbar.graphs.html.HRule" [color=4, label=HRule]; "uqbar.graphs.html.LineBreak" [color=4, label="Line\nBreak"]; "uqbar.graphs.html.Table" [color=4, label=Table]; "uqbar.graphs.html.TableCell" [color=4, label="Table\nCell"]; "uqbar.graphs.html.TableRow" [color=4, label="Table\nRow"]; "uqbar.graphs.html.Text" [color=4, label=Text]; "uqbar.graphs.html.VRule" [color=4, label=VRule]; } subgraph "cluster_uqbar.graphs.records" { graph [label="uqbar.graphs.records"]; node [color=5]; "uqbar.graphs.records.RecordField" [color=5, label="Record\nField"]; "uqbar.graphs.records.RecordGroup" [color=5, label="Record\nGroup"]; } subgraph "cluster_uqbar.io" { graph [label="uqbar.io"]; node [color=6]; "uqbar.io.DirectoryChange" [color=6, label="Directory\nChange"]; "uqbar.io.Profiler" [color=6, label=Profiler]; "uqbar.io.RedirectedStreams" [color=6, label="Redirected\nStreams"]; "uqbar.io.Timer" [color=6, label=Timer]; } subgraph "cluster_uqbar.sphinx.inheritance" { graph [label="uqbar.sphinx.inheritance"]; node [color=7]; "uqbar.sphinx.inheritance.InheritanceDiagram" [color=7, label="Inheritance\nDiagram"]; "uqbar.sphinx.inheritance.inheritance_diagram" [color=7, label="inheritance\ndiagram"]; } "builtins.Exception" -> "uqbar.book.console.ConsoleError" [minlen=1]; "builtins.int" -> "enum.IntEnum"; "builtins.object" -> "code.InteractiveInterpreter" [minlen=3]; "builtins.object" -> "collections.abc.Container" [minlen=1]; "builtins.object" -> "collections.abc.Iterable" [minlen=2]; "builtins.object" -> "collections.abc.Sized" [minlen=3]; "builtins.object" -> "docutils.nodes.Body" [minlen=1]; "builtins.object" -> "docutils.nodes.Node" [minlen=2]; "builtins.object" -> "docutils.parsers.rst.Directive"; "builtins.object" -> "enum.Enum"; "builtins.object" -> "uqbar.apis.builders.APIBuilder" [minlen=3]; "builtins.object" -> "uqbar.apis.documenters.MemberDocumenter"; "builtins.object" -> "uqbar.apis.documenters.ModuleDocumenter"; "builtins.object" -> "uqbar.apis.documenters.RootDocumenter" [minlen=1]; "builtins.object" -> "uqbar.apis.dummy.MyParentClass" [minlen=2]; "builtins.object" -> "uqbar.apis.graphs.InheritanceGraph" [minlen=3]; "builtins.object" -> "uqbar.book.console.ConsoleInput" [minlen=1]; "builtins.object" -> "uqbar.book.console.ConsoleOutput" [minlen=2]; "builtins.object" -> "uqbar.book.console.MonkeyPatch" [minlen=3]; "builtins.object" -> "uqbar.book.extensions.Extension" [minlen=1]; "builtins.object" -> "uqbar.containers.dependency_graph.DependencyGraph" [minlen=2]; "builtins.object" -> "uqbar.containers.unique_tree.UniqueTreeNode"; "builtins.object" -> "uqbar.graphs.core.Edge" [minlen=3]; "builtins.object" -> "uqbar.graphs.graphers.Grapher" [minlen=1]; "builtins.object" -> "uqbar.io.DirectoryChange" [minlen=2]; "builtins.object" -> "uqbar.io.Profiler" [minlen=3]; "builtins.object" -> "uqbar.io.RedirectedStreams" [minlen=1]; "builtins.object" -> "uqbar.io.Timer" [minlen=2]; "code.InteractiveConsole" -> "uqbar.book.console.Console" [minlen=1]; "collections.abc.MutableMapping" -> "uqbar.graphs.attrs.Attributes" [minlen=1]; "docutils.nodes.Element" -> "uqbar.book.sphinx.uqbar_book_defaults_block"; "docutils.nodes.Element" -> "uqbar.book.sphinx.uqbar_book_import_block"; "docutils.nodes.Element" -> "uqbar.sphinx.inheritance.inheritance_diagram"; "docutils.nodes.General" -> "uqbar.book.sphinx.uqbar_book_defaults_block"; "docutils.nodes.General" -> "uqbar.book.sphinx.uqbar_book_import_block"; "docutils.nodes.General" -> "uqbar.sphinx.inheritance.inheritance_diagram"; "docutils.parsers.rst.Directive" -> "uqbar.book.sphinx.UqbarBookDefaultsDirective" [minlen=1]; "docutils.parsers.rst.Directive" -> "uqbar.book.sphinx.UqbarBookDirective" [minlen=2]; "docutils.parsers.rst.Directive" -> "uqbar.book.sphinx.UqbarBookImportDirective" [minlen=3]; "docutils.parsers.rst.Directive" -> "uqbar.sphinx.inheritance.InheritanceDiagram" [minlen=1]; "enum.Enum" -> "uqbar.enums.StrictEnumeration" [minlen=2]; "enum.IntEnum" -> "uqbar.enums.IntEnumeration" [minlen=1]; "uqbar.apis.documenters.ClassDocumenter" -> "uqbar.apis.summarizers.SummarizingClassDocumenter" [minlen=1]; "uqbar.apis.documenters.ModuleDocumenter" -> "uqbar.apis.summarizers.ImmaterialModuleDocumenter" [minlen=1]; "uqbar.apis.documenters.ModuleDocumenter" -> "uqbar.apis.summarizers.SummarizingModuleDocumenter" [minlen=2]; "uqbar.apis.documenters.RootDocumenter" -> "uqbar.apis.summarizers.SummarizingRootDocumenter" [minlen=1]; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.apis.nodes.PackageNode" [minlen=1]; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.graphs.core.Graph" [minlen=2]; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.graphs.core.Node" [minlen=3]; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.graphs.html.Table" [minlen=1]; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.graphs.html.TableCell"; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.graphs.html.TableRow" [minlen=2]; "uqbar.containers.unique_tree.UniqueTreeList" -> "uqbar.graphs.records.RecordGroup" [minlen=3]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.apis.nodes.ModuleNode" [minlen=1]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.graphs.core.Attachable"; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.graphs.html.HRule" [minlen=2]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.graphs.html.LineBreak" [minlen=3]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.graphs.html.Text" [minlen=1]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.graphs.html.VRule" [minlen=2]; "uqbar.containers.unique_tree.UniqueTreeNode" -> "uqbar.graphs.records.RecordField"; "uqbar.graphs.core.Attachable" -> "uqbar.graphs.html.TableCell"; "uqbar.graphs.core.Attachable" -> "uqbar.graphs.records.RecordField"; }

Sphinx extensions

uqbar.sphinx.api

Uqbar Sphinx API generation extension.

uqbar.sphinx.book

Uqbar Sphinx executable examples extension.

uqbar.sphinx.inheritance

Uqbar Sphinx inheritance graph extension.

uqbar.sphinx.style

Uqbar Sphinx styling extension.

API auto-generation

uqbar.apis.builders.APIBuilder

A builder of reStructuredText API documentation for Python packages.

uqbar.apis.documenters.ClassDocumenter

A basic class documenter.

uqbar.apis.documenters.FunctionDocumenter

A basic function documenter.

uqbar.apis.documenters.ModuleDocumenter

A basic module documenter.

uqbar.apis.documenters.RootDocumenter

A basic root documenter.

Graphviz graphs

uqbar.apis.graphs.InheritanceGraph

A builder of Graphviz inheritance graphs.

uqbar.graphs.core.Graph

A Graphviz graph, subgraph or cluster.

uqbar.graphs.core.Node

A Graphviz node.

uqbar.graphs.core.Edge

A Graphviz edge.

Generic data-structures

uqbar.containers.dependency_graph.DependencyGraph

A dependency graph of hashables.

uqbar.containers.unique_tree.UniqueTreeNode

A node in a "unique" tree.

uqbar.containers.unique_tree.UniqueTreeList

A list-like node in a "unique" tree.

uqbar.containers.unique_tree.UniqueTreeSet

A set-like node in a "unique" tree.

Context managers

uqbar.io.DirectoryChange

A context manager for temporarily changing the current working directory.

uqbar.io.Profiler

A context manager for profiling blocks of code.

uqbar.io.RedirectedStreams

A context manager for capturing stdout and stderr output.

uqbar.io.Timer

A context manager for timing blocks of code.

Consult Uqbar’s API: