From 30720a7a1040d720d995a42abfdfb01bec994c74 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 3 Apr 2022 19:00:43 -0500 Subject: [PATCH 1/8] feat: libvcs.cmd --- libvcs/cmd/git.py | 6 ++++++ libvcs/cmd/hg.py | 6 ++++++ libvcs/cmd/svn.py | 6 ++++++ 3 files changed, 18 insertions(+) create mode 100644 libvcs/cmd/git.py create mode 100644 libvcs/cmd/hg.py create mode 100644 libvcs/cmd/svn.py diff --git a/libvcs/cmd/git.py b/libvcs/cmd/git.py new file mode 100644 index 000000000..4afb4b6cd --- /dev/null +++ b/libvcs/cmd/git.py @@ -0,0 +1,6 @@ +import pathlib + + +class Git: + def __init__(self, dir: pathlib.Path): + self.dir: pathlib.Path = dir diff --git a/libvcs/cmd/hg.py b/libvcs/cmd/hg.py new file mode 100644 index 000000000..cc01a8a06 --- /dev/null +++ b/libvcs/cmd/hg.py @@ -0,0 +1,6 @@ +import pathlib + + +class Hg: + def __init__(self, dir: pathlib.Path): + self.dir: pathlib.Path = dir diff --git a/libvcs/cmd/svn.py b/libvcs/cmd/svn.py new file mode 100644 index 000000000..fb88fca21 --- /dev/null +++ b/libvcs/cmd/svn.py @@ -0,0 +1,6 @@ +import pathlib + + +class Svn: + def __init__(self, dir: pathlib.Path): + self.dir: pathlib.Path = dir From 1b5d8695c9e876a7771618a003bc535da9164098 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 3 Apr 2022 19:07:26 -0500 Subject: [PATCH 2/8] docs: Add cmd --- docs/cmd/git.md | 22 ++++++++++++++++++++++ docs/cmd/hg.md | 18 ++++++++++++++++++ docs/cmd/index.md | 22 ++++++++++++++++++++++ docs/cmd/svn.md | 18 ++++++++++++++++++ docs/index.md | 1 + 5 files changed, 81 insertions(+) create mode 100644 docs/cmd/git.md create mode 100644 docs/cmd/hg.md create mode 100644 docs/cmd/index.md create mode 100644 docs/cmd/svn.md diff --git a/docs/cmd/git.md b/docs/cmd/git.md new file mode 100644 index 000000000..a6d3d70ac --- /dev/null +++ b/docs/cmd/git.md @@ -0,0 +1,22 @@ +# `libvcs.cmd.git` + +For `git(1)`. + +Compare to: [`fabtools.git`](https://fabtools.readthedocs.io/en/0.19.0/api/git.html#git-module), +[`salt.modules.git`](https://docs.saltproject.io/en/latest/ref/modules/all/salt.modules.git.html), +[`ansible.builtin.git`](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/git_module.html) + +```{eval-rst} +.. autosummary:: + :recursive: + + libvcs.cmd.git.Git +``` + +```{eval-rst} +.. automodule:: libvcs.cmd.git + :members: + :show-inheritance: + :undoc-members: + :inherited-members: +``` diff --git a/docs/cmd/hg.md b/docs/cmd/hg.md new file mode 100644 index 000000000..ed443a45a --- /dev/null +++ b/docs/cmd/hg.md @@ -0,0 +1,18 @@ +# `libvcs.cmd.hg` + +For mercurial, aka `hg(1)`. + +```{eval-rst} +.. autosummary:: + :recursive: + + libvcs.cmd.hg.Hg +``` + +```{eval-rst} +.. automodule:: libvcs.cmd.hg + :members: + :show-inheritance: + :undoc-members: + :inherited-members: +``` diff --git a/docs/cmd/index.md b/docs/cmd/index.md new file mode 100644 index 000000000..4e495cb08 --- /dev/null +++ b/docs/cmd/index.md @@ -0,0 +1,22 @@ +(cmd)= + +# `libvcs.cmd` + +Compare to: [`fabtools.git`](https://fabtools.readthedocs.io/en/0.19.0/api/git.html#git-module), +[`salt.modules.git`](https://docs.saltproject.io/en/latest/ref/modules/all/salt.modules.git.html), +[`ansible.builtin.git`](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/git_module.html) + +:::{warning} + +All APIs are considered experimental and subject to break pre-1.0. They can and will break between +versions. + +::: + +```{toctree} +:caption: API + +git +hg +svn +``` diff --git a/docs/cmd/svn.md b/docs/cmd/svn.md new file mode 100644 index 000000000..be08ae841 --- /dev/null +++ b/docs/cmd/svn.md @@ -0,0 +1,18 @@ +# `libvcs.cmd.svn` + +For subversion, aka `svn(1)` + +```{eval-rst} +.. autosummary:: + :recursive: + + libvcs.cmd.svn.Svn +``` + +```{eval-rst} +.. automodule:: libvcs.cmd.svn + :members: + :show-inheritance: + :undoc-members: + :inherited-members: +``` diff --git a/docs/index.md b/docs/index.md index f51a5a3b0..68b4e5e15 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,6 +9,7 @@ :hidden: quickstart +cmd/index states/index ``` From fc118b4b8af6ce60ee723e1f0765519bdaed86f4 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Mon, 4 Apr 2022 04:43:20 -0500 Subject: [PATCH 3/8] refactor!: Move libvcs.util -> libvcs.cmd.core --- docs/states/index.md | 2 +- libvcs/__init__.py | 2 +- libvcs/{util.py => cmd/core.py} | 2 +- libvcs/states/base.py | 2 +- tests/conftest.py | 2 +- tests/states/test_git.py | 2 +- tests/states/test_hg.py | 2 +- tests/states/test_svn.py | 2 +- tests/test_util.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) rename libvcs/{util.py => cmd/core.py} (99%) diff --git a/docs/states/index.md b/docs/states/index.md index 09f567106..7899e3f07 100644 --- a/docs/states/index.md +++ b/docs/states/index.md @@ -45,6 +45,6 @@ See examples below of git, mercurial, and subversion. ## Utility stuff ```{eval-rst} -.. automodule:: libvcs.util +.. automodule:: libvcs.cmd.core :members: ``` diff --git a/libvcs/__init__.py b/libvcs/__init__.py index bc978fc2c..7b219eeb9 100644 --- a/libvcs/__init__.py +++ b/libvcs/__init__.py @@ -1,11 +1,11 @@ """Repo package for libvcs.""" import logging +from .cmd.core import RepoLoggingAdapter from .states.base import BaseRepo from .states.git import GitRepo from .states.hg import MercurialRepo from .states.svn import SubversionRepo -from .util import RepoLoggingAdapter __all__ = [ "GitRepo", diff --git a/libvcs/util.py b/libvcs/cmd/core.py similarity index 99% rename from libvcs/util.py rename to libvcs/cmd/core.py index 1875df438..cdcd882cc 100644 --- a/libvcs/util.py +++ b/libvcs/cmd/core.py @@ -6,7 +6,7 @@ import subprocess import sys -from . import exc +from .. import exc logger = logging.getLogger(__name__) diff --git a/libvcs/states/base.py b/libvcs/states/base.py index 7be30ffe5..6b1666fd3 100644 --- a/libvcs/states/base.py +++ b/libvcs/states/base.py @@ -4,7 +4,7 @@ from typing import NamedTuple from urllib import parse as urlparse -from ..util import RepoLoggingAdapter, mkdir_p, run +from libvcs.cmd.core import RepoLoggingAdapter, mkdir_p, run logger = logging.getLogger(__name__) diff --git a/tests/conftest.py b/tests/conftest.py index 27b1ea13a..edc8486cd 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -5,8 +5,8 @@ import pytest +from libvcs.cmd.core import run from libvcs.shortcuts import create_repo_from_pip_url -from libvcs.util import run @pytest.fixture(autouse=True, scope="session") diff --git a/tests/states/test_git.py b/tests/states/test_git.py index 521ed1860..a6ba596c3 100644 --- a/tests/states/test_git.py +++ b/tests/states/test_git.py @@ -11,6 +11,7 @@ from pytest_mock import MockerFixture from libvcs import exc +from libvcs.cmd.core import run, which from libvcs.shortcuts import create_repo_from_pip_url from libvcs.states.git import ( FullRemoteDict, @@ -19,7 +20,6 @@ convert_pip_url as git_convert_pip_url, extract_status, ) -from libvcs.util import run, which if not which("git"): pytestmark = pytest.mark.skip(reason="git is not available") diff --git a/tests/states/test_hg.py b/tests/states/test_hg.py index 7d267f90c..ffdfad01a 100644 --- a/tests/states/test_hg.py +++ b/tests/states/test_hg.py @@ -5,8 +5,8 @@ import pytest +from libvcs.cmd.core import run, which from libvcs.shortcuts import create_repo, create_repo_from_pip_url -from libvcs.util import run, which if not which("hg"): pytestmark = pytest.mark.skip(reason="hg is not available") diff --git a/tests/states/test_svn.py b/tests/states/test_svn.py index e30c6786c..e872d7f2c 100644 --- a/tests/states/test_svn.py +++ b/tests/states/test_svn.py @@ -4,8 +4,8 @@ import pytest +from libvcs.cmd.core import run, which from libvcs.shortcuts import create_repo_from_pip_url -from libvcs.util import run, which if not which("svn"): pytestmark = pytest.mark.skip(reason="svn is not available") diff --git a/tests/test_util.py b/tests/test_util.py index fb1a47364..5b7f4c2c9 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -2,7 +2,7 @@ import pytest -from libvcs.util import mkdir_p, which +from libvcs.cmd.core import mkdir_p, which def test_mkdir_p(tmp_path: pathlib.Path): From 78c3c2f8099916f394e2582404415849154d8aa7 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Mon, 4 Apr 2022 05:35:27 -0500 Subject: [PATCH 4/8] feat(svn): run, checkout --- libvcs/cmd/svn.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/libvcs/cmd/svn.py b/libvcs/cmd/svn.py index fb88fca21..8b957f04d 100644 --- a/libvcs/cmd/svn.py +++ b/libvcs/cmd/svn.py @@ -1,6 +1,67 @@ import pathlib +from typing import TYPE_CHECKING, Literal, Sequence, Union + +from .core import run + +if TYPE_CHECKING: + from subprocess import _CMD class Svn: def __init__(self, dir: pathlib.Path): self.dir: pathlib.Path = dir + + def run(self, args: "_CMD", quiet: Union[bool, None] = None, **kwargs): + """ + Passing None means the flag won't be passed unless otherwise stated. + + Wraps svn's `Options + `_. + + Parameters + ---------- + quiet : + -q / --quiet + username : + --username + password : + --password + no_auth_cache : + --no-auth-cache + non_interactive : + --non-interactive + trust_server_cert : + --trust-server-cert + config_dir : + --config-dir + config_option : + --config-option. ``FILE:SECTION:OPTION=[VALUE]`` + """ + + if isinstance(args, Sequence): + cli_args = ["svn", *args] + else: + cli_args = f"svn {args}" + return run(cmd=cli_args) + + def checkout( + self, + depth: Union[Literal["infinity", "empty", "files", "immediates"], None] = None, + ): + """ + Passing None means the flag won't be passed unless otherwise stated. + + Wraps `svn checkout + `_ (co). + + Parameters + ---------- + depth : + Sparse checkut support, Optional + """ + local_flags: list[str] = [] + + if depth is not None: + local_flags.append(depth) + + self.run(["checkout", *local_flags]) From 1e754d71e50ac40349f6cf78704207f54e7ffcf8 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Mon, 4 Apr 2022 05:45:31 -0500 Subject: [PATCH 5/8] chore(svn): Try to fix hinting warnings --- libvcs/cmd/svn.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/libvcs/cmd/svn.py b/libvcs/cmd/svn.py index 8b957f04d..72ee890e9 100644 --- a/libvcs/cmd/svn.py +++ b/libvcs/cmd/svn.py @@ -4,16 +4,31 @@ from .core import run if TYPE_CHECKING: - from subprocess import _CMD + # from subprocess import _CMD + # from _typeshed import StrOrBytesPath + + from os import PathLike + + StrOrBytesPath = str | bytes | PathLike[str] | PathLike[bytes] # stable + + _CMD = StrOrBytesPath | Sequence[StrOrBytesPath] class Svn: def __init__(self, dir: pathlib.Path): + """Lite, typed, pythonic wrapper for svn(1). + + Parameters + ---------- + dir : + Operates as PATH in the corresonding svn subcommand. + """ self.dir: pathlib.Path = dir def run(self, args: "_CMD", quiet: Union[bool, None] = None, **kwargs): """ - Passing None means the flag won't be passed unless otherwise stated. + Passing None to a subcommand option, the flag won't be passed unless otherwise + stated. Wraps svn's `Options `_. From 97f156332b1b00e7e572c270f42b2e573a030042 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Mon, 4 Apr 2022 05:59:10 -0500 Subject: [PATCH 6/8] build(deps): Remove sphinx-autodoc-typehints --- docs/conf.py | 1 - poetry.lock | 21 +-------------------- pyproject.toml | 3 +-- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index ec78ca5c3..cedf2aa75 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,6 @@ extensions = [ "sphinx.ext.autodoc", "sphinx.ext.autosummary", - "sphinx_autodoc_typehints", "sphinx.ext.intersphinx", "sphinx.ext.todo", "sphinx.ext.napoleon", diff --git a/poetry.lock b/poetry.lock index b5e93194f..24aeb7e5e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -630,21 +630,6 @@ sphinx = "*" [package.extras] test = ["pytest", "pytest-cov"] -[[package]] -name = "sphinx-autodoc-typehints" -version = "1.17.0" -description = "Type hints (PEP 484) support for the Sphinx autodoc extension" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -Sphinx = ">=4" - -[package.extras] -testing = ["covdefaults (>=2)", "coverage (>=6)", "diff-cover (>=6.4)", "nptyping (>=1)", "pytest (>=6)", "pytest-cov (>=3)", "sphobjinv (>=2)", "typing-extensions (>=3.5)"] -type_comments = ["typed-ast (>=1.4.0)"] - [[package]] name = "sphinx-copybutton" version = "0.5.0" @@ -902,7 +887,7 @@ test = [] [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "3e0c76ed614f2badbfce6fba37947a37588b00bddefc3fc8df902426ac30c34f" +content-hash = "0ca79bee8b213071ac17b8420309e3f13d161471669072107502b16c5e0bd478" [metadata.files] alabaster = [ @@ -1246,10 +1231,6 @@ sphinx-autobuild = [ {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"}, {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"}, ] -sphinx-autodoc-typehints = [ - {file = "sphinx_autodoc_typehints-1.17.0-py3-none-any.whl", hash = "sha256:081daf53077b4ae1c28347d6d858e13e63aefe3b4aacef79fd717dd60687b470"}, - {file = "sphinx_autodoc_typehints-1.17.0.tar.gz", hash = "sha256:51c7b3f5cb9ccd15d0b52088c62df3094f1abd9612930340365c26def8629a14"}, -] sphinx-copybutton = [ {file = "sphinx-copybutton-0.5.0.tar.gz", hash = "sha256:a0c059daadd03c27ba750da534a92a63e7a36a7736dcf684f26ee346199787f6"}, {file = "sphinx_copybutton-0.5.0-py3-none-any.whl", hash = "sha256:9684dec7434bd73f0eea58dda93f9bb879d24bff2d8b187b1f2ec08dfe7b5f48"}, diff --git a/pyproject.toml b/pyproject.toml index c1be4b5de..c758f36a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,6 @@ python = "^3.9" sphinx = "*" furo = "^2022.2.23" sphinx-autobuild = "^2021.3.14" -sphinx-autodoc-typehints = "~1.17.0" sphinx-issues = "^3.0.0" sphinx-inline-tabs = "*" sphinxext-opengraph = "*" @@ -71,7 +70,7 @@ isort = "*" flake8 = "*" [tool.poetry.extras] -docs = ["sphinx", "sphinx-issues", "sphinx-autodoc-typehints", "sphinx-autobuild", "sphinx-copybutton", "sphinxext-opengraph", "sphinx-inline-tabs", "sphinxext-rediraffe", "myst_parser", "furo"] +docs = ["sphinx", "sphinx-issues", "sphinx-autobuild", "sphinx-copybutton", "sphinxext-opengraph", "sphinx-inline-tabs", "sphinxext-rediraffe", "myst_parser", "furo"] test = ["pytest", "pytest-rerunfailures", "pytest-mock", "pytest-watcher"] coverage = ["codecov", "coverage", "pytest-cov"] format = ["black", "isort"] From 94bd53d8d3d01b8ff2609d7b36534d9b78f423a0 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Mon, 4 Apr 2022 06:10:56 -0500 Subject: [PATCH 7/8] build(deps): Add sphinx-toolbar --- poetry.lock | 413 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 3 +- 2 files changed, 411 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 24aeb7e5e..d67e1f0bd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6,6 +6,24 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "apeye" +version = "1.2.0" +description = "Handy tools for working with URLs and APIs." +category = "dev" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +domdf-python-tools = ">=2.6.0" +idna = ">=2.5" +platformdirs = ">=2.3.0" +requests = ">=2.24.0" + +[package.extras] +all = ["cachecontrol[filecache] (>=0.12.6)", "lockfile (>=0.12.2)"] +limiter = ["cachecontrol[filecache] (>=0.12.6)", "lockfile (>=0.12.2)"] + [[package]] name = "atomicwrites" version = "1.4.0" @@ -28,6 +46,17 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +[[package]] +name = "autodocsumm" +version = "0.2.7" +description = "Extended sphinx autodoc including automatic autosummaries" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +Sphinx = ">=2.2,<5.0" + [[package]] name = "babel" version = "2.9.1" @@ -76,6 +105,23 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "cachecontrol" +version = "0.12.10" +description = "httplib2 caching for requests" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +lockfile = {version = ">=0.9", optional = true, markers = "extra == \"filecache\""} +msgpack = ">=0.5.2" +requests = "*" + +[package.extras] +filecache = ["lockfile (>=0.9)"] +redis = ["redis (>=2.10.5)"] + [[package]] name = "certifi" version = "2021.10.8" @@ -140,6 +186,53 @@ tomli = {version = "*", optional = true, markers = "extra == \"toml\""} [package.extras] toml = ["tomli"] +[[package]] +name = "cssutils" +version = "2.4.0" +description = "A CSS Cascading Style Sheets library for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "mock", "lxml", "cssselect", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources"] + +[[package]] +name = "deprecation" +version = "2.1.0" +description = "A library to handle automated deprecations" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +packaging = "*" + +[[package]] +name = "deprecation-alias" +version = "0.3.1" +description = "A wrapper around 'deprecation' providing support for deprecated aliases." +category = "dev" +optional = false +python-versions = ">=3.6.1" + +[package.dependencies] +deprecation = ">=2.1.0" +packaging = ">=20.4" + +[[package]] +name = "dict2css" +version = "0.3.0" +description = "A μ-library for constructing cascading style sheets from Python dictionaries." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cssutils = ">=2.2.0" +domdf-python-tools = ">=2.2.0" + [[package]] name = "distlib" version = "0.3.4" @@ -150,12 +243,28 @@ python-versions = "*" [[package]] name = "docutils" -version = "0.17.1" +version = "0.16" description = "Docutils -- Python Documentation Utilities" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "domdf-python-tools" +version = "3.2.2.post1" +description = "Helpful functions for Python 🐍 🛠️" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +natsort = ">=7.0.1" +typing-extensions = ">=3.7.4.1" + +[package.extras] +all = ["pytz (>=2019.1)"] +dates = ["pytz (>=2019.1)"] + [[package]] name = "filelock" version = "3.6.0" @@ -194,6 +303,24 @@ beautifulsoup4 = "*" pygments = ">=2.7,<3.0" sphinx = ">=4.0,<5.0" +[[package]] +name = "html5lib" +version = "1.1" +description = "HTML parser based on the WHATWG HTML specification" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +six = ">=1.9" +webencodings = "*" + +[package.extras] +all = ["genshi", "chardet (>=2.2)", "lxml"] +chardet = ["chardet (>=2.2)"] +genshi = ["genshi"] +lxml = ["lxml"] + [[package]] name = "idna" version = "3.3" @@ -274,6 +401,14 @@ python-versions = "*" six = "*" tornado = {version = "*", markers = "python_version > \"2.7\""} +[[package]] +name = "lockfile" +version = "0.12.2" +description = "Platform-independent file locking module" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "markdown-it-py" version = "2.0.1" @@ -335,6 +470,14 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "msgpack" +version = "1.0.3" +description = "MessagePack (de)serializer." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "mypy-extensions" version = "0.4.3" @@ -366,6 +509,18 @@ linkify = ["linkify-it-py (>=1.0,<2.0)"] rtd = ["ipython", "sphinx-book-theme (>=0.1.0,<0.2.0)", "sphinx-panels (>=0.5.2,<0.6.0)", "sphinxcontrib-bibtex (>=2.1,<3.0)", "sphinxext-rediraffe (>=0.2,<1.0)", "sphinxcontrib.mermaid (>=0.6.3,<0.7.0)", "sphinxext-opengraph (>=0.4.2,<0.5.0)"] testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)"] +[[package]] +name = "natsort" +version = "8.1.0" +description = "Simple yet flexible natural sorting in Python." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +fast = ["fastnumbers (>=2.0.0)"] +icu = ["PyICU (>=1.0.0)"] + [[package]] name = "packaging" version = "21.3" @@ -558,6 +713,29 @@ urllib3 = ">=1.21.1,<1.27" socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +[[package]] +name = "ruamel.yaml" +version = "0.17.21" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "dev" +optional = false +python-versions = ">=3" + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel.yaml.clib" +version = "0.2.6" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "dev" +optional = false +python-versions = ">=3.5" + [[package]] name = "six" version = "1.16.0" @@ -630,6 +808,21 @@ sphinx = "*" [package.extras] test = ["pytest", "pytest-cov"] +[[package]] +name = "sphinx-autodoc-typehints" +version = "1.14.1" +description = "Type hints (PEP 484) support for the Sphinx autodoc extension" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Sphinx = ">=4" + +[package.extras] +testing = ["covdefaults (>=2)", "coverage (>=6)", "diff-cover (>=6.4)", "pytest (>=6)", "pytest-cov (>=3)", "sphobjinv (>=2)", "typing-extensions (>=3.5)"] +type_comments = ["typed-ast (>=1.4.0)"] + [[package]] name = "sphinx-copybutton" version = "0.5.0" @@ -676,6 +869,66 @@ dev = ["pytest (>=6.2.0)", "flake8 (==3.9.2)", "flake8-bugbear (==20.11.1)", "pr lint = ["flake8 (==3.9.2)", "flake8-bugbear (==20.11.1)", "pre-commit (>=2.7,<3.0)"] tests = ["pytest (>=6.2.0)"] +[[package]] +name = "sphinx-prompt" +version = "1.5.0" +description = "Sphinx directive to add unselectable prompt" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pygments = "*" +Sphinx = "*" + +[[package]] +name = "sphinx-tabs" +version = "3.2.0" +description = "Tabbed views for Sphinx" +category = "dev" +optional = false +python-versions = "~=3.6" + +[package.dependencies] +docutils = ">=0.16.0,<0.17.0" +pygments = "*" +sphinx = ">=2,<5" + +[package.extras] +code_style = ["pre-commit (==2.13.0)"] +testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions", "pygments", "sphinx-testing", "bs4", "rinohtype"] + +[[package]] +name = "sphinx-toolbox" +version = "2.18.0" +description = "Box of handy tools for Sphinx 🧰 📔" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +apeye = ">=0.4.0" +autodocsumm = ">=0.2.0" +beautifulsoup4 = ">=4.9.1" +cachecontrol = {version = ">=0.12.6", extras = ["filecache"]} +deprecation-alias = ">=0.2.0" +dict2css = ">=0.2.3" +docutils = "0.16" +domdf-python-tools = ">=2.9.0" +html5lib = ">=1.1" +lockfile = ">=0.12.2" +"ruamel.yaml" = ">=0.16.12" +sphinx = ">=3.2.0" +sphinx-autodoc-typehints = ">=1.11.1,<=1.14.1" +sphinx-prompt = ">=1.1.0" +sphinx-tabs = ">=1.2.1,<=3.2.0" +tabulate = ">=0.8.7" +typing-extensions = ">=3.7.4.3,<3.10.0.1 || >3.10.0.1" + +[package.extras] +testing = ["coincidence (>=0.4.3)", "pygments (>=2.7.4)"] +all = ["coincidence (>=0.4.3)", "pygments (>=2.7.4)"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.2" @@ -769,6 +1022,17 @@ python-versions = ">=3.6" [package.dependencies] sphinx = ">=2.0" +[[package]] +name = "tabulate" +version = "0.8.9" +description = "Pretty-print tabular data" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +widechars = ["wcwidth"] + [[package]] name = "toml" version = "0.10.2" @@ -865,6 +1129,14 @@ python-versions = ">=3.6" [package.extras] watchmedo = ["PyYAML (>=3.10)"] +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "zipp" version = "3.8.0" @@ -887,13 +1159,17 @@ test = [] [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "0ca79bee8b213071ac17b8420309e3f13d161471669072107502b16c5e0bd478" +content-hash = "3eada11b4ea3f57913d2005894a5dceb619c79bf52b4a7c847e1520c0cbef672" [metadata.files] alabaster = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, ] +apeye = [ + {file = "apeye-1.2.0-py3-none-any.whl", hash = "sha256:d6b08c96457e4e0457088c247417fc336ebf83ab88645c508562aaeaf3077954"}, + {file = "apeye-1.2.0.tar.gz", hash = "sha256:0bb0f5b037730f149d3ab3697bc30ccccd60407cf16218d8ffa8f78462239e1e"}, +] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, @@ -902,6 +1178,9 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] +autodocsumm = [ + {file = "autodocsumm-0.2.7.tar.gz", hash = "sha256:cea7e2f900e5ac10baa6e831683e9241b0892226210609c087b94f109e0f6ab6"}, +] babel = [ {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, @@ -935,6 +1214,10 @@ black = [ {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, ] +cachecontrol = [ + {file = "CacheControl-0.12.10-py2.py3-none-any.whl", hash = "sha256:b0d43d8f71948ef5ebdee5fe236b86c6ffc7799370453dccb0e894c20dfa487c"}, + {file = "CacheControl-0.12.10.tar.gz", hash = "sha256:d8aca75b82eec92d84b5d6eb8c8f66ea16f09d2adb09dbca27fe2d5fc8d3732d"}, +] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, @@ -999,13 +1282,33 @@ coverage = [ {file = "coverage-6.3.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf"}, {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, ] +cssutils = [ + {file = "cssutils-2.4.0-py3-none-any.whl", hash = "sha256:6c7ab239b432c157cd55303993935b92be07272e694d66c75b95eb56928936f6"}, + {file = "cssutils-2.4.0.tar.gz", hash = "sha256:2d97210a83b0a3fe1e4469f5ff9a6420b078572035188b1bab7103c3a36dc89b"}, +] +deprecation = [ + {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, + {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, +] +deprecation-alias = [ + {file = "deprecation-alias-0.3.1.tar.gz", hash = "sha256:88df5f83a9b6cab583106ca6d8518fa197102ca2e62477a804663b8ccdd6b90c"}, + {file = "deprecation_alias-0.3.1-py3-none-any.whl", hash = "sha256:8daac9bb342c293caf88ddb6b69ac6bd62e9b8bbe7108441bf916069682721e3"}, +] +dict2css = [ + {file = "dict2css-0.3.0-py3-none-any.whl", hash = "sha256:ef934ce73a225fdd5f811b484fe9e2dd768f7ef14a89fc8f4eb5672597131d00"}, + {file = "dict2css-0.3.0.tar.gz", hash = "sha256:1e8b1bf580dca2083198f88a60ec88c878a8829d760dfe45483ef80fe2905117"}, +] distlib = [ {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, ] docutils = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, + {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, + {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, +] +domdf-python-tools = [ + {file = "domdf-python-tools-3.2.2.post1.tar.gz", hash = "sha256:fef90a0109b284424b14f9513e3b543f68feb1d48beddde435928e0f05f4664e"}, + {file = "domdf_python_tools-3.2.2.post1-py3-none-any.whl", hash = "sha256:70a9771dea6f5aa37779d2a86d4abaf63f8fa305e3313a53f71f45b8c8c5fd08"}, ] filelock = [ {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, @@ -1019,6 +1322,10 @@ furo = [ {file = "furo-2022.3.4-py3-none-any.whl", hash = "sha256:6c718293ebf87755f0b9f148b1e697c9e3aabd7af955644d4bcaee5ce75db781"}, {file = "furo-2022.3.4.tar.gz", hash = "sha256:7660267cc67b2828fd0e17bc07adeb612c47b2eba5a6de07049a1569e6044aa8"}, ] +html5lib = [ + {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, + {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, +] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -1046,6 +1353,10 @@ jinja2 = [ livereload = [ {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, ] +lockfile = [ + {file = "lockfile-0.12.2-py2.py3-none-any.whl", hash = "sha256:6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa"}, + {file = "lockfile-0.12.2.tar.gz", hash = "sha256:6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799"}, +] markdown-it-py = [ {file = "markdown-it-py-2.0.1.tar.gz", hash = "sha256:7b5c153ae1ab2cde00a33938bce68f3ad5d68fbe363f946de7d28555bed4e08a"}, {file = "markdown_it_py-2.0.1-py3-none-any.whl", hash = "sha256:31974138ca8cafbcb62213f4974b29571b940e78364584729233f59b8dfdb8bd"}, @@ -1104,6 +1415,42 @@ mdurl = [ {file = "mdurl-0.1.0-py3-none-any.whl", hash = "sha256:40654d6dcb8d21501ed13c21cc0bd6fc42ff07ceb8be30029e5ae63ebc2ecfda"}, {file = "mdurl-0.1.0.tar.gz", hash = "sha256:94873a969008ee48880fb21bad7de0349fef529f3be178969af5817239e9b990"}, ] +msgpack = [ + {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079"}, + {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39"}, + {file = "msgpack-1.0.3-cp310-cp310-win32.whl", hash = "sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85"}, + {file = "msgpack-1.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7"}, + {file = "msgpack-1.0.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770"}, + {file = "msgpack-1.0.3-cp36-cp36m-win32.whl", hash = "sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9"}, + {file = "msgpack-1.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a"}, + {file = "msgpack-1.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920"}, + {file = "msgpack-1.0.3-cp37-cp37m-win32.whl", hash = "sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50"}, + {file = "msgpack-1.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba"}, + {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea"}, + {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1"}, + {file = "msgpack-1.0.3-cp38-cp38-win32.whl", hash = "sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4"}, + {file = "msgpack-1.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a"}, + {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3"}, + {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2"}, + {file = "msgpack-1.0.3-cp39-cp39-win32.whl", hash = "sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88"}, + {file = "msgpack-1.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d"}, + {file = "msgpack-1.0.3.tar.gz", hash = "sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e"}, +] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, @@ -1112,6 +1459,10 @@ myst-parser = [ {file = "myst-parser-0.17.0.tar.gz", hash = "sha256:d412347a5cacb77ebc03d7f7ffef050cd61957d46f234313d350e84e24972260"}, {file = "myst_parser-0.17.0-py3-none-any.whl", hash = "sha256:555ec2950aba5ae5dac5c162c7e9a43ad4a7291cfac644d8f5f84da8efa6f356"}, ] +natsort = [ + {file = "natsort-8.1.0-py3-none-any.whl", hash = "sha256:f59988d2f24e77b6b56f8a8f882d5df6b3b637e09e075abc67b486d59fba1a4b"}, + {file = "natsort-8.1.0.tar.gz", hash = "sha256:c7c1f3f27c375719a4dfcab353909fe39f26c2032a062a8c80cc844eaaca0445"}, +] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, @@ -1211,6 +1562,37 @@ requests = [ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] +"ruamel.yaml" = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] +"ruamel.yaml.clib" = [ + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, + {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -1231,6 +1613,10 @@ sphinx-autobuild = [ {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"}, {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"}, ] +sphinx-autodoc-typehints = [ + {file = "sphinx_autodoc_typehints-1.14.1-py3-none-any.whl", hash = "sha256:8b3b7da797fa007f7f39c518879a1bdae3a7dab96e170f4cb5a4b96390238369"}, + {file = "sphinx_autodoc_typehints-1.14.1.tar.gz", hash = "sha256:875de815a1ba609a4c0ebc620faecd8eb57183ba1f4cc6f8abba1790c140e960"}, +] sphinx-copybutton = [ {file = "sphinx-copybutton-0.5.0.tar.gz", hash = "sha256:a0c059daadd03c27ba750da534a92a63e7a36a7736dcf684f26ee346199787f6"}, {file = "sphinx_copybutton-0.5.0-py3-none-any.whl", hash = "sha256:9684dec7434bd73f0eea58dda93f9bb879d24bff2d8b187b1f2ec08dfe7b5f48"}, @@ -1243,6 +1629,17 @@ sphinx-issues = [ {file = "sphinx-issues-3.0.1.tar.gz", hash = "sha256:b7c1dc1f4808563c454d11c1112796f8c176cdecfee95f0fd2302ef98e21e3d6"}, {file = "sphinx_issues-3.0.1-py3-none-any.whl", hash = "sha256:8b25dc0301159375468f563b3699af7a63720fd84caf81c1442036fcd418b20c"}, ] +sphinx-prompt = [ + {file = "sphinx_prompt-1.5.0-py3-none-any.whl", hash = "sha256:fa4e90d8088b5a996c76087d701fc7e31175f8b9dc4aab03a507e45051067162"}, +] +sphinx-tabs = [ + {file = "sphinx-tabs-3.2.0.tar.gz", hash = "sha256:33137914ed9b276e6a686d7a337310ee77b1dae316fdcbce60476913a152e0a4"}, + {file = "sphinx_tabs-3.2.0-py3-none-any.whl", hash = "sha256:1e1b1846c80137bd81a78e4a69b02664b98b1e1da361beb30600b939dfc75065"}, +] +sphinx-toolbox = [ + {file = "sphinx_toolbox-2.18.0-py3-none-any.whl", hash = "sha256:73780db4615f82be90516dc1378941f2c0b77a0b97c5b50a303cd77a156f371e"}, + {file = "sphinx_toolbox-2.18.0.tar.gz", hash = "sha256:eb66a69dceadd1325011ce34f9849797cda3e8cb0671a29b9ba3b7479c8c755a"}, +] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, @@ -1275,6 +1672,10 @@ sphinxext-rediraffe = [ {file = "sphinxext-rediraffe-0.2.7.tar.gz", hash = "sha256:651dcbfae5ffda9ffd534dfb8025f36120e5efb6ea1a33f5420023862b9f725d"}, {file = "sphinxext_rediraffe-0.2.7-py3-none-any.whl", hash = "sha256:9e430a52d4403847f4ffb3a8dd6dfc34a9fe43525305131f52ed899743a5fd8c"}, ] +tabulate = [ + {file = "tabulate-0.8.9-py3-none-any.whl", hash = "sha256:d7c013fe7abbc5e491394e10fa845f8f32fe54f8dc60c6622c6cf482d25d47e4"}, + {file = "tabulate-0.8.9.tar.gz", hash = "sha256:eb1d13f25760052e8931f2ef80aaf6045a6cceb47514db8beab24cded16f13a7"}, +] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, @@ -1368,6 +1769,10 @@ watchdog = [ {file = "watchdog-2.1.7-py3-none-win_ia64.whl", hash = "sha256:351e09b6d9374d5bcb947e6ac47a608ec25b9d70583e9db00b2fcdb97b00b572"}, {file = "watchdog-2.1.7.tar.gz", hash = "sha256:3fd47815353be9c44eebc94cc28fe26b2b0c5bd889dafc4a5a7cbdf924143480"}, ] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] zipp = [ {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, diff --git a/pyproject.toml b/pyproject.toml index c758f36a8..6da0c4659 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ python = "^3.9" sphinx = "*" furo = "^2022.2.23" sphinx-autobuild = "^2021.3.14" +sphinx-toolbox = "^2.18.0" sphinx-issues = "^3.0.0" sphinx-inline-tabs = "*" sphinxext-opengraph = "*" @@ -70,7 +71,7 @@ isort = "*" flake8 = "*" [tool.poetry.extras] -docs = ["sphinx", "sphinx-issues", "sphinx-autobuild", "sphinx-copybutton", "sphinxext-opengraph", "sphinx-inline-tabs", "sphinxext-rediraffe", "myst_parser", "furo"] +docs = ["sphinx", "sphinx-issues", "sphinx-autobuild", "sphinx-copybutton", "sphinxext-opengraph", "sphinx-inline-tabs", "sphinxext-rediraffe", "sphinx-toolbar", "myst_parser", "furo"] test = ["pytest", "pytest-rerunfailures", "pytest-mock", "pytest-watcher"] coverage = ["codecov", "coverage", "pytest-cov"] format = ["black", "isort"] From 2209ddfa22a71443196f3ba7d4b53baa623ea578 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Mon, 4 Apr 2022 06:17:28 -0500 Subject: [PATCH 8/8] docs: Try sphinx-toolbox --- docs/conf.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index cedf2aa75..56dadb0d5 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -20,8 +20,10 @@ exec(fp.read(), about) extensions = [ + "sphinx_toolbox.more_autodoc.augment_defaults", "sphinx.ext.autodoc", "sphinx.ext.autosummary", + "sphinx_toolbox.more_autodoc", "sphinx.ext.intersphinx", "sphinx.ext.todo", "sphinx.ext.napoleon", @@ -39,11 +41,6 @@ master_doc = "index" -# app setup hook -def setup(app): - pass - - project = about["__title__"] copyright = about["__copyright__"] @@ -55,6 +52,10 @@ def setup(app): pygments_style = "monokai" pygments_dark_style = "monokai" +github_username = "vcs-python" +github_repository = "libvcs" +docutils_tab_width = 4 + html_css_files = ["css/custom.css"] html_static_path = ["_static"] html_extra_path = ["manifest.json"] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy