diff --git a/.codecov.yml b/.codecov.yml
new file mode 100644
index 000000000..bf9b9abef
--- /dev/null
+++ b/.codecov.yml
@@ -0,0 +1,15 @@
+codecov:
+ notify:
+ require_ci_to_pass: no
+
+coverage:
+ precision: 2
+ round: down
+ range: "70...100"
+ status:
+ project:
+ default:
+ target: auto
+ threshold: 1%
+ base: auto
+ patch: off
diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml
new file mode 100644
index 000000000..572b9b882
--- /dev/null
+++ b/.github/workflows/publish-docs.yml
@@ -0,0 +1,97 @@
+name: Publish Docs
+
+on: [push]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [ '3.x' ]
+ steps:
+ - uses: actions/checkout@v1
+ - name: Configure git
+ run: |
+ git config --global user.name 'travis-ci'
+ git config --global user.email 'travis@nowhere.edu'
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: Get full Python version
+ id: full-python-version
+ shell: bash
+ run: echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
+
+ - name: Install poetry
+ run: |
+ curl -O -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
+ python get-poetry.py -y
+ echo "::set-env name=PATH::$HOME/.poetry/bin:$PATH"
+ rm get-poetry.py
+
+ - name: Get poetry cache paths from config
+ run: |
+ echo ::set-env name=poetry_cache_dir::$(poetry config --list | sed -n 's/.*cache-dir = //p' | sed -e 's/^"//' -e 's/"$//')
+ echo ::set-env name=poetry_virtualenvs_path::$(poetry config --list | sed -n 's/.*virtualenvs.path = .* # //p' | sed -e 's/^"//' -e 's/"$//')
+
+ - name: Configure poetry
+ shell: bash
+ run: poetry config virtualenvs.in-project true
+
+ - name: Set up cache
+ uses: actions/cache@v2
+ id: cache
+ with:
+ path: |
+ .venv
+ {{ env.poetry_cache_dir }}
+ {{ env.poetry_virtualenvs_path }}
+ key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
+
+ - name: Ensure cache is healthy
+ if: steps.cache.outputs.cache-hit == 'true'
+ shell: bash
+ run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
+
+ - name: Upgrade pip
+ shell: bash
+ run: poetry run python -m pip install pip -U
+
+ - name: Install dependencies [w/ docs]
+ run: poetry install --extras "docs lint"
+
+ - name: Build documentation
+ run: |
+ pushd docs; make SPHINXBUILD='poetry run sphinx-build' html; popd
+
+ - name: Push documentation to S3
+ uses: jakejarvis/s3-sync-action@master
+ with:
+ args: --acl public-read --follow-symlinks --delete
+ env:
+ AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ AWS_REGION: 'us-west-1' # optional: defaults to us-east-1
+ SOURCE_DIR: 'docs/_build/html' # optional: defaults to entire repository
+
+ - name: Generate list of changed files for CloudFront to invalidate
+ run: |
+ pushd docs/_build/html; FILES=$(find . -name \* -print | grep html | cut -c2- | sort | uniq | tr '\n' ' '); popd
+ for file in $FILES; do
+ echo $file
+ # add bare directory to list of updated paths when we see index.html
+ [[ "$file" == *"/index.html" ]] && echo $file | sed -e 's/\/index.html$/\//'
+ done | sort | uniq | tr '\n' ' ' > .updated_files
+
+ - name: Invalidate on CloudFront
+ uses: chetan/invalidate-cloudfront-action@master
+ env:
+ DISTRIBUTION: ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION }}
+ AWS_REGION: 'us-east-1'
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ PATHS_FROM: .updated_files
diff --git a/.github/workflows/libtmux-ci.yml b/.github/workflows/tests.yml
similarity index 99%
rename from .github/workflows/libtmux-ci.yml
rename to .github/workflows/tests.yml
index 396d4f874..af22160f4 100644
--- a/.github/workflows/libtmux-ci.yml
+++ b/.github/workflows/tests.yml
@@ -1,4 +1,4 @@
-name: libtmux CI
+name: tests
on: [push, pull_request]
diff --git a/.gitignore b/.gitignore
index 95e0deb77..0b94471db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,7 +45,7 @@ htmlcov/
.cache
nosetests.xml
coverage.xml
-*,cover
+*.cover
.hypothesis/
.pytest_cache/
@@ -53,7 +53,7 @@ coverage.xml
*.mo
*.pot
-# Django stuff:
+# Django stuff
*.log
# Sphinx documentation
@@ -62,13 +62,11 @@ docs/_build/
# PyBuilder
target/
-#Ipython Notebook
+# ipython Notebook
.ipynb_checkpoints
# editors
.idea
.ropeproject
*.swp
-
-# docs
-doc/_build/
+.vim
diff --git a/.tmuxp.yaml b/.tmuxp.yaml
index 081fd2fdb..cc381ec79 100644
--- a/.tmuxp.yaml
+++ b/.tmuxp.yaml
@@ -17,7 +17,7 @@ windows:
layout: main-horizontal
options:
main-pane-height: 35
- start_directory: doc/
+ start_directory: docs/
panes:
- focus: true
- pane
diff --git a/MANIFEST.in b/MANIFEST.in
index 97af18918..e12120eac 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,3 @@
-include README.rst LICENSE CHANGES .tmuxp.yaml
+include README.rst LICENSE CHANGES pyproject.toml .tmuxp.yaml
include requirements/*.txt
-recursive-include doc *.rst
+recursive-include docs *.rst
diff --git a/Makefile b/Makefile
index e46cf34fd..efd45209b 100644
--- a/Makefile
+++ b/Makefile
@@ -10,25 +10,31 @@ entr_warn:
@echo "----------------------------------------------------------"
isort:
- isort `${PY_FILES}`
+ poetry run isort `${PY_FILES}`
black:
- black `${PY_FILES}` --skip-string-normalization
+ poetry run black `${PY_FILES}`
test:
- py.test $(test)
+ poetry run py.test $(test)
watch_test:
if command -v entr > /dev/null; then ${PY_FILES} | entr -c $(MAKE) test; else $(MAKE) test entr_warn; fi
build_docs:
- cd doc && $(MAKE) html
+ $(MAKE) -C docs html
watch_docs:
- cd doc && $(MAKE) watch_docs
+ if command -v entr > /dev/null; then ${DOC_FILES} | entr -c $(MAKE) build_docs; else $(MAKE) build_docs entr_warn; fi
+
+serve_docs:
+ $(MAKE) -C docs serve
+
+dev_docs:
+ $(MAKE) -j watch_docs serve_docs
flake8:
- flake8 libtmux tests
+ poetry run flake8
watch_flake8:
if command -v entr > /dev/null; then ${PY_FILES} | entr -c $(MAKE) flake8; else $(MAKE) flake8 entr_warn; fi
diff --git a/README.rst b/README.rst
index dab8d5c9c..373ee4950 100644
--- a/README.rst
+++ b/README.rst
@@ -155,12 +155,11 @@ powerful traversal features::
>>> pane.window.session
Session($3 foo)
-.. _MIT: http://opensource.org/licenses/MIT
-.. _developing and testing: http://libtmux.git-pull.com/en/latest/developing.html
+.. _developing and testing: http://libtmux.git-pull.com/developing.html
.. _tmuxp: https://tmuxp.git-pull.com/
.. _documentation: https://libtmux.git-pull.com/
-.. _API: https://libtmux.git-pull.com/en/latest/api.html
-.. _architectural details: https://libtmux.git-pull.com/en/latest/about.html
+.. _API: https://libtmux.git-pull.com/api.html
+.. _architectural details: https://libtmux.git-pull.com/about.html
.. _formats: http://man.openbsd.org/OpenBSD-5.9/man1/tmux.1#FORMATS
.. _target: http://man.openbsd.org/OpenBSD-5.9/man1/tmux.1#COMMANDS
@@ -176,47 +175,31 @@ See donation options at https://git-pull.com/support.html.
Project details
---------------
+- tmux support: 1.8, 1.9a, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
+- python support: 2.7, >= 3.3, pypy, pypy3
+- Source: https://github.com/tmux-python/libtmux
+- Docs: https://libtmux.git-pull.com
+- API: https://libtmux.git-pull.com/api.html
+- Changelog: https://libtmux.git-pull.com/history.html
+- Issues: https://github.com/tmux-python/libtmux/issues
+- Test Coverage: https://codecov.io/gh/tmux-python/libtmux
+- pypi: https://pypi.python.org/pypi/libtmux
+- Open Hub: https://www.openhub.net/p/libtmux-python
+- License: `MIT`_.
-============== ==========================================================
-tmux support 1.8, 1.9a, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
-python support 2.7, >= 3.3, pypy, pypy3
-Source https://github.com/tmux-python/libtmux
-Docs https://libtmux.git-pull.com
-API https://libtmux.git-pull.com/en/latest/api.html
-Changelog https://libtmux.git-pull.com/en/latest/history.html
-Issues https://github.com/tmux-python/libtmux/issues
-Test Coverage https://codecov.io/gh/tmux-python/libtmux
-pypi https://pypi.python.org/pypi/libtmux
-Open Hub https://www.openhub.net/p/libtmux-python
-License `MIT`_.
-git repo .. code-block:: bash
-
- $ git clone https://github.com/tmux-python/libtmux.git
-install stable .. code-block:: bash
-
- $ pip install libtmux
-install dev .. code-block:: bash
-
- $ git clone https://github.com/tmux-python/libtmux.git libtmux
- $ cd ./libtmux
- $ virtualenv .venv
- $ source .venv/bin/activate
- $ pip install -e .
-
- See the `developing and testing`_ page in the docs for
- more.
-tests .. code-block:: bash
-
- $ make test
-============== ==========================================================
+.. _MIT: http://opensource.org/licenses/MIT
.. |pypi| image:: https://img.shields.io/pypi/v/libtmux.svg
:alt: Python Package
:target: http://badge.fury.io/py/libtmux
-.. |build-status| image:: https://github.com/tmux-python/libtmux/workflows/.github/workflows/libtmux-ci.yml/badge.svg
+.. |docs| image:: https://github.com/tmux-python/libtmux/workflows/Publish%20Docs/badge.svg
+ :alt: Docs
+ :target: https://github.com/tmux-python/libtmux/actions?query=workflow%3A"Publish+Docs"
+
+.. |build-status| image:: https://github.com/tmux-python/libtmux/workflows/tests/badge.svg
:alt: Build Status
- :target: https://github.com/tmux-python/libtmux/actions
+ :target: https://github.com/tmux-python/tmux-python/actions?query=workflow%3A"tests"
.. |coverage| image:: https://codecov.io/gh/tmux-python/libtmux/branch/master/graph/badge.svg
:alt: Code Coverage
@@ -224,8 +207,3 @@ tests .. code-block:: bash
.. |license| image:: https://img.shields.io/github/license/tmux-python/libtmux.svg
:alt: License
-
-.. |docs| image:: https://readthedocs.org/projects/libtmux/badge/?version=latest
- :alt: Documentation Status
- :scale: 100%
- :target: https://readthedocs.org/projects/libtmux/
diff --git a/doc/developing.rst b/doc/developing.rst
deleted file mode 100644
index eb0261630..000000000
--- a/doc/developing.rst
+++ /dev/null
@@ -1,165 +0,0 @@
- _developing:
-
-======================
-Developing and Testing
-======================
-
-.. todo::
- link to sliderepl or ipython notebook slides
-
-Our tests are inside ``tests/``. Tests are implemented using
-`pytest`_.
-
-``make test`` will create a tmux server on a separate ``socket_name``
-using ``$ tmux -L test_case``.
-
-.. _pytest: http://pytest.org/
-
-.. _install_dev_env:
-
-Install the latest code from git
---------------------------------
-
-To begin developing, check out the code from github:
-
-.. code-block:: bash
-
- $ git clone git@github.com:tmux-python/libtmux.git
- $ cd libtmux
-
-Now create a virtualenv, if you don't know how to, you can create a
-virtualenv with:
-
-.. code-block:: bash
-
- $ virtualenv .venv
-
-Then activate it to your current tty / terminal session with:
-
-.. code-block:: bash
-
- $ source .venv/bin/activate
-
-Good! Now let's run this:
-
-.. code-block:: bash
-
- $ pip install -e .
-
-This has ``pip``, a python package manager install the python package
-in the current directory. ``-e`` means ``--editable``, which means you can
-adjust the code and the installed software will reflect the changes.
-
-.. code-block:: bash
-
- $ libtmux
-
-Test Runner
------------
-
-As you seen above, the ``libtmux`` command will now be available to you,
-since you are in the virtual environment, your `PATH` environment was
-updated to include a special version of ``python`` inside your ``.venv``
-folder with its own packages.
-
-.. code-block:: bash
-
- $ make test
-
-You probably didn't see anything but tests scroll by.
-
-If you found a problem or are trying to write a test, you can file an
-`issue on github`_.
-
-.. _test_specific_tests:
-
-Test runner options
-~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: bash
-
- $ py.test tests/test_common.py
-
-will test the ``tests/test_common.py`` tests.
-
-.. code-block:: bash
-
- $ py.test tests/test_common.py::test_ignores_letter_versions
-
-tests ``test_ignore_letter_versions()`` ``tests/test_common.py``.
-
-Multiple can be separated by spaces:
-
-.. code-block:: bash
-
- $ py.test tests/test_{window,pane}.py \
- tests/test_common.py::test_ignores_letter_versions
-
-.. _test_builder_visually:
-
-Visual testing
-~~~~~~~~~~~~~~
-
-You can watch tmux testsuite build sessions visually by keeping a client
-open in a separate terminal.
-
-Create two terminals:
-
- - Terminal 1: ``$ tmux -L test_case``
- - Terminal 2: ``$ cd`` into the libtmux project and into the
- ``virtualenv`` if you are using one, see details on installing the dev
- version of libtmux above. Then:
-
- .. code-block:: bash
-
- $ py.test tests/test_workspacebuilder.py
-
-Terminal 1 should have flickered and built the session before your eyes.
-libtmux hides this building from normal users.
-
-Run tests on save
------------------
-
-You can re-run tests automatically on file edit.
-
-.. note::
- This requires ``entr(1)``.
-
-Install `entr`_. Packages are available available on most Linux and BSD
-variants, including Debian, Ubuntu, FreeBSD, OS X.
-
-To run all tests upon editing any ``.py`` file:
-
-.. code-block:: bash
-
- $ make watch_test
-
-.. _entr: http://entrproject.org/
-
-Rebuild the documentation when an ``.rst`` file is edited:
-
-.. code-block:: bash
-
- $ cd doc
- $ make watch
-
-.. _libtmux developer config:
-
-.. _gh_actions:
-
-GH Actions
-~~~~~~~~~~
-
-libtmux uses `github actions`_ for continuous integration / automatic unit
-testing.
-
-libtmux is tested against tmux 1.8 and the latest git source. Interpretters
-tested are pypy, pypy3, 2.7 and >= 3.3. The actions use this
-`.github/workflows/libtmux-ci.yml`_ configuration:
-
-.. literalinclude:: ../.github/workflows/libtmux-ci.yml
- :language: yaml
-
-.. _github actions: https://github.com/features/actions
-.. _.github/workflows/libtmux-ci.yml: https://github.com/tmux-python/libtmux/blob/master/.github/workflows/libtmux-ci.yml
-.. _issue on github: https://github.com/tmux-python/libtmux/issues
diff --git a/doc/Makefile b/docs/Makefile
similarity index 94%
rename from doc/Makefile
rename to docs/Makefile
index db6286f42..afd449c23 100644
--- a/doc/Makefile
+++ b/docs/Makefile
@@ -1,11 +1,12 @@
# Makefile for Sphinx documentation
-WATCH_FILES= find .. -type f -not -path '*/\.*' | grep -i '.*[.]rst\|CHANGES\|TODO\|.*conf\.py\|.*[.]py$$' 2> /dev/null
+WATCH_FILES= find .. -type f -not -path '*/\.*' | grep -i '.*[.]rst\$\|.*[.].md\|.*[.]py\$\|CHANGES\|TODO\|.*conf\.py' 2> /dev/null
+SHELL := /bin/bash
PYVERSION=$(shell python -c "import sys;v=sys.version_info[0];sys.stdout.write(str(v))")
HTTP_PORT = 8023
# You can set these variables from the command line.
SPHINXOPTS =
-SPHINXBUILD = sphinx-build
+SPHINXBUILD = poetry run sphinx-build
PAPER =
BUILDDIR = _build
@@ -164,13 +165,16 @@ watch:
serve:
@echo '=============================================================='
@echo
- @echo 'docs server running at http://0.0.0.0:${HTTP_PORT}/_build/html'
+ @echo 'docs server running at http://localhost:${HTTP_PORT}/'
@echo
@echo '=============================================================='
@if test ${PYVERSION} -eq 2; then $(MAKE) serve_py2; else make serve_py3; fi
serve_py2:
- python -m SimpleHTTPServer ${HTTP_PORT}
+ pushd _build/html; python2 -m SimpleHTTPServer ${HTTP_PORT}; popd
serve_py3:
- python -m http.server ${HTTP_PORT}
+ python -m http.server ${HTTP_PORT} --directory _build/html
+
+dev:
+ $(MAKE) -j watch serve
diff --git a/doc/_static/favicon.ico b/docs/_static/favicon.ico
similarity index 100%
rename from doc/_static/favicon.ico
rename to docs/_static/favicon.ico
diff --git a/doc/_static/img/books/amazon-logo.png b/docs/_static/img/books/amazon-logo.png
similarity index 100%
rename from doc/_static/img/books/amazon-logo.png
rename to docs/_static/img/books/amazon-logo.png
diff --git a/doc/_static/img/books/ibooks-logo.png b/docs/_static/img/books/ibooks-logo.png
similarity index 100%
rename from doc/_static/img/books/ibooks-logo.png
rename to docs/_static/img/books/ibooks-logo.png
diff --git a/docs/_static/img/icons/icon-128x128.png b/docs/_static/img/icons/icon-128x128.png
new file mode 100644
index 000000000..146030d28
Binary files /dev/null and b/docs/_static/img/icons/icon-128x128.png differ
diff --git a/docs/_static/img/icons/icon-144x144.png b/docs/_static/img/icons/icon-144x144.png
new file mode 100644
index 000000000..346959d8c
Binary files /dev/null and b/docs/_static/img/icons/icon-144x144.png differ
diff --git a/docs/_static/img/icons/icon-152x152.png b/docs/_static/img/icons/icon-152x152.png
new file mode 100644
index 000000000..d64299ce5
Binary files /dev/null and b/docs/_static/img/icons/icon-152x152.png differ
diff --git a/docs/_static/img/icons/icon-192x192.png b/docs/_static/img/icons/icon-192x192.png
new file mode 100644
index 000000000..5ceb62398
Binary files /dev/null and b/docs/_static/img/icons/icon-192x192.png differ
diff --git a/docs/_static/img/icons/icon-384x384.png b/docs/_static/img/icons/icon-384x384.png
new file mode 100644
index 000000000..90164025a
Binary files /dev/null and b/docs/_static/img/icons/icon-384x384.png differ
diff --git a/docs/_static/img/icons/icon-512x512.png b/docs/_static/img/icons/icon-512x512.png
new file mode 100644
index 000000000..11a775331
Binary files /dev/null and b/docs/_static/img/icons/icon-512x512.png differ
diff --git a/docs/_static/img/icons/icon-72x72.png b/docs/_static/img/icons/icon-72x72.png
new file mode 100644
index 000000000..87a7c485d
Binary files /dev/null and b/docs/_static/img/icons/icon-72x72.png differ
diff --git a/docs/_static/img/icons/icon-96x96.png b/docs/_static/img/icons/icon-96x96.png
new file mode 100644
index 000000000..1f9c36a88
Binary files /dev/null and b/docs/_static/img/icons/icon-96x96.png differ
diff --git a/doc/_static/img/libtmux.svg b/docs/_static/img/libtmux.svg
similarity index 100%
rename from doc/_static/img/libtmux.svg
rename to docs/_static/img/libtmux.svg
diff --git a/doc/_templates/book.html b/docs/_templates/book.html
similarity index 100%
rename from doc/_templates/book.html
rename to docs/_templates/book.html
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
new file mode 100644
index 000000000..681b3deec
--- /dev/null
+++ b/docs/_templates/layout.html
@@ -0,0 +1,45 @@
+{% extends "!layout.html" %}
+{%- block extrahead %}
+ {{ super() }}
+ {%- if theme_show_meta_manifest_tag == true %}
+
+ {% endif -%}
+ {%- if theme_show_meta_og_tags == true %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endif -%}
+ {%- if theme_show_meta_app_icon_tags == true %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endif -%}
+{% endblock %}
diff --git a/doc/about.rst b/docs/about.rst
similarity index 100%
rename from doc/about.rst
rename to docs/about.rst
diff --git a/doc/api.rst b/docs/api.rst
similarity index 100%
rename from doc/api.rst
rename to docs/api.rst
diff --git a/doc/conf.py b/docs/conf.py
similarity index 83%
rename from doc/conf.py
rename to docs/conf.py
index 6009d01e5..d855c3dcc 100644
--- a/doc/conf.py
+++ b/docs/conf.py
@@ -5,6 +5,7 @@
from os.path import dirname, relpath
import alagitpull
+from recommonmark.transform import AutoStructify
import libtmux # NOQA
from libtmux import test # NOQA
@@ -30,18 +31,30 @@
'sphinx.ext.napoleon',
'alagitpull',
'sphinx_issues',
+ 'recommonmark',
]
-releases_unstable_prehistory = True
-releases_document_name = ["history"]
-releases_issue_uri = "https://github.com/tmux-python/libtmux/issues/%s"
-releases_release_uri = "https://github.com/tmux-python/libtmux/tree/v%s"
+# app setup hook
+def setup(app):
+ app.add_config_value(
+ 'recommonmark_config',
+ {
+ #'url_resolver': lambda url: github_doc_root + url,
+ 'enable_auto_toc_tree': True,
+ 'auto_toc_tree_section': 'Contents',
+ 'auto_code_block': True,
+ 'enable_eval_rst': True,
+ },
+ True,
+ )
+ app.add_transform(AutoStructify)
+
issues_github_path = about['__github__'].replace('https://github.com/', '')
templates_path = ['_templates']
-source_suffix = '.rst'
+source_suffix = {'.rst': 'restructuredtext', '.md': 'markdown'}
master_doc = 'index'
@@ -66,6 +79,12 @@
'github_banner': True,
'projects': alagitpull.projects,
'project_name': about['__title__'],
+ 'project_title': about['__title__'],
+ 'project_description': about['__description__'],
+ 'project_url': about['__docs__'],
+ 'show_meta_manifest_tag': True,
+ 'show_meta_og_tags': True,
+ 'show_meta_app_icon_tags': True,
}
alagitpull_internal_hosts = ['libtmux.git-pull.com', '0.0.0.0']
alagitpull_external_hosts_new_window = True
@@ -83,6 +102,7 @@
html_theme_path = ['_themes']
html_static_path = ['_static']
+html_extra_path = ['manifest.json']
htmlhelp_basename = '%sdoc' % about['__title__']
diff --git a/docs/developing.md b/docs/developing.md
new file mode 100644
index 000000000..75a6f5951
--- /dev/null
+++ b/docs/developing.md
@@ -0,0 +1,60 @@
+# Development
+
+[poetry] is a required package to develop.
+
+`git clone https://github.com/tmux-python/libtmux.git`
+
+`cd libtmux`
+
+`poetry install -E "docs test coverage lint format"`
+
+Makefile commands prefixed with `watch_` will watch files and rerun.
+
+## Tests
+
+`poetry run py.test`
+
+Helpers: `make test`
+Rerun tests on file change: `make watch_test` (requires [entr(1)])
+
+## Documentation
+
+Default preview server: http://localhost:8023
+
+`cd docs/` and `make html` to build. `make serve` to start http server.
+
+Helpers:
+`make build_docs`, `make serve_docs`
+
+Rebuild docs on file change: `make watch_docs` (requires [entr(1)])
+
+Rebuild docs and run server via one terminal: `make dev_docs` (requires above, and a
+`make(1)` with `-J` support, e.g. GNU Make)
+
+## Formatting / Linting
+
+The project uses [black] and [isort] (one after the other) and runs [flake8] via
+CI. See the configuration in `pyproject.toml` and `setup.cfg`:
+
+`make black isort`: Run `black` first, then `isort` to handle import nuances
+`make flake8`, to watch (requires `entr(1)`): `make watch_flake8`
+
+## Releasing
+
+As of 0.10, [poetry] handles virtualenv creation, package requirements, versioning,
+building, and publishing. Therefore there is no setup.py or requirements files.
+
+Update `__version__` in `__about__.py` and `pyproject.toml`::
+
+ git commit -m 'build(libtmux): Tag v0.1.1'
+ git tag v0.1.1
+ git push
+ git push --tags
+ poetry build
+ poetry deploy
+
+[poetry]: https://python-poetry.org/
+[entr(1)]: http://eradman.com/entrproject/
+[black]: https://github.com/psf/black
+[isort]: https://pypi.org/project/isort/
+[flake8]: https://flake8.pycqa.org/
diff --git a/doc/glossary.rst b/docs/glossary.rst
similarity index 100%
rename from doc/glossary.rst
rename to docs/glossary.rst
diff --git a/doc/history.rst b/docs/history.rst
similarity index 100%
rename from doc/history.rst
rename to docs/history.rst
diff --git a/doc/index.rst b/docs/index.rst
similarity index 79%
rename from doc/index.rst
rename to docs/index.rst
index 3028bf2fe..1404b4e18 100644
--- a/doc/index.rst
+++ b/docs/index.rst
@@ -5,11 +5,10 @@ libtmux
#######
.. include:: ../README.rst
- :start-line: 4
- :end-before: Project details
-
-Explore:
+ :start-line: 2
+Table of Contents
+-----------------
.. toctree::
:maxdepth: 2
diff --git a/docs/manifest.json b/docs/manifest.json
new file mode 100644
index 000000000..3d370ee74
--- /dev/null
+++ b/docs/manifest.json
@@ -0,0 +1,53 @@
+{
+ "name": "libtmux",
+ "short_name": "libtmux",
+ "description": "scripting library / orm for tmux",
+ "theme_color": "#2196f3",
+ "background_color": "#fff",
+ "display": "browser",
+ "Scope": "https://libtmux.git-pull.com/",
+ "start_url": "https://libtmux.git-pull.com/",
+ "icons": [
+ {
+ "src": "_static/img/icons/icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-128x128.png",
+ "sizes": "128x128",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-152x152.png",
+ "sizes": "152x152",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-384x384.png",
+ "sizes": "384x384",
+ "type": "image/png"
+ },
+ {
+ "src": "_static/img/icons/icon-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "splash_pages": null
+}
diff --git a/doc/panes.rst b/docs/panes.rst
similarity index 100%
rename from doc/panes.rst
rename to docs/panes.rst
diff --git a/doc/properties.rst b/docs/properties.rst
similarity index 100%
rename from doc/properties.rst
rename to docs/properties.rst
diff --git a/doc/quickstart.rst b/docs/quickstart.rst
similarity index 100%
rename from doc/quickstart.rst
rename to docs/quickstart.rst
diff --git a/doc/requirements.txt b/docs/requirements.txt
similarity index 100%
rename from doc/requirements.txt
rename to docs/requirements.txt
diff --git a/doc/servers.rst b/docs/servers.rst
similarity index 100%
rename from doc/servers.rst
rename to docs/servers.rst
diff --git a/doc/sessions.rst b/docs/sessions.rst
similarity index 100%
rename from doc/sessions.rst
rename to docs/sessions.rst
diff --git a/doc/traversal.rst b/docs/traversal.rst
similarity index 100%
rename from doc/traversal.rst
rename to docs/traversal.rst
diff --git a/doc/windows.rst b/docs/windows.rst
similarity index 100%
rename from doc/windows.rst
rename to docs/windows.rst
diff --git a/poetry.lock b/poetry.lock
index c7f7d35b6..448478a1e 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -11,8 +11,8 @@ category = "dev"
description = "Cleverly-named alabaster sub-theme for git-pull projects"
name = "alagitpull"
optional = false
-python-versions = "*"
-version = "0.0.23"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "0.1.0"
[package.dependencies]
alabaster = "<0.8"
@@ -29,7 +29,7 @@ version = "1.4.4"
[[package]]
category = "dev"
description = "Atomic file writes."
-marker = "python_version < \"3\" or python_version >= \"3\" and sys_platform == \"win32\""
+marker = "python_version >= \"3\" and sys_platform == \"win32\" or python_version < \"3\""
name = "atomicwrites"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
@@ -38,7 +38,7 @@ version = "1.4.0"
[[package]]
category = "dev"
description = "Classes Without Boilerplate"
-marker = "python_version < \"3\" or python_version >= \"3\" or python_version >= \"3.6\" and python_version < \"4.0\""
+marker = "python_version >= \"3.6\" and python_version < \"4.0\" or python_version >= \"3\" or python_version < \"3\""
name = "attrs"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
@@ -117,6 +117,18 @@ optional = false
python-versions = "*"
version = "2020.6.20"
+[[package]]
+category = "dev"
+description = "Foreign Function Interface for Python calling C code."
+marker = "sys_platform == \"linux\""
+name = "cffi"
+optional = false
+python-versions = "*"
+version = "1.14.1"
+
+[package.dependencies]
+pycparser = "*"
+
[[package]]
category = "dev"
description = "Universal encoding detector for Python 2 and 3"
@@ -140,7 +152,7 @@ description = "Hosted coverage reports for GitHub, Bitbucket and Gitlab"
name = "codecov"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "2.1.7"
+version = "2.1.8"
[package.dependencies]
coverage = "*"
@@ -149,12 +161,27 @@ requests = ">=2.7.9"
[[package]]
category = "dev"
description = "Cross-platform colored terminal text."
-marker = "sys_platform == \"win32\" and python_version < \"3\" or python_version >= \"3\" and sys_platform == \"win32\""
name = "colorama"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "0.4.3"
+[[package]]
+category = "dev"
+description = "Python parser for the CommonMark Markdown spec"
+name = "commonmark"
+optional = false
+python-versions = "*"
+version = "0.9.1"
+
+[package.dependencies]
+[package.dependencies.future]
+python = "<3"
+version = ">=0.14.0"
+
+[package.extras]
+test = ["flake8 (3.7.8)", "hypothesis (3.55.3)"]
+
[[package]]
category = "dev"
description = "Updated configparser from Python 3.7 for Python 2.6+."
@@ -183,26 +210,31 @@ description = "Code coverage measurement for Python"
name = "coverage"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
-version = "5.1"
+version = "5.2.1"
[package.extras]
toml = ["toml"]
[[package]]
category = "dev"
-description = "Style checker for Sphinx (or other) RST documentation"
-name = "doc8"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+marker = "sys_platform == \"linux\""
+name = "cryptography"
optional = false
-python-versions = "*"
-version = "0.8.1"
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
+version = "3.0"
[package.dependencies]
-Pygments = "*"
-chardet = "*"
-docutils = "*"
-restructuredtext-lint = ">=0.7"
-six = "*"
-stevedore = "*"
+cffi = ">=1.8,<1.11.3 || >1.11.3"
+six = ">=1.4.1"
+
+[package.extras]
+docs = ["sphinx (>=1.6.5,<1.8.0 || >1.8.0,<3.1.0 || >3.1.0,<3.1.1 || >3.1.1)", "sphinx-rtd-theme"]
+docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
+idna = ["idna (>=2.1)"]
+pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["pytest (>=3.6.0,<3.9.0 || >3.9.0,<3.9.1 || >3.9.1,<3.9.2 || >3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,<3.79.2 || >3.79.2)"]
[[package]]
category = "dev"
@@ -272,6 +304,15 @@ optional = false
python-versions = "*"
version = "3.2.3-2"
+[[package]]
+category = "dev"
+description = "Clean single-source support for Python 3 and 2"
+marker = "python_version < \"3\""
+name = "future"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+version = "0.18.2"
+
[[package]]
category = "dev"
description = "Backport of the concurrent.futures package from Python 3"
@@ -326,9 +367,19 @@ version = "*"
docs = ["sphinx", "rst.linker"]
testing = ["packaging", "pep517", "importlib-resources (>=1.3)"]
+[[package]]
+category = "dev"
+description = "iniconfig: brain-dead simple config-ini parsing"
+marker = "python_version >= \"3\""
+name = "iniconfig"
+optional = false
+python-versions = "*"
+version = "1.0.1"
+
[[package]]
category = "dev"
description = "A Python utility / library to sort Python imports."
+marker = "python_version < \"3.6\" or python_version >= \"3.6\""
name = "isort"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
@@ -349,6 +400,32 @@ pyproject = ["toml"]
requirements = ["pipreqs", "pip-api"]
xdg_home = ["appdirs (>=1.4.0)"]
+[[package]]
+category = "dev"
+description = "A Python utility / library to sort Python imports."
+marker = "python_version >= \"3.6\""
+name = "isort"
+optional = false
+python-versions = ">=3.6,<4.0"
+version = "5.3.2"
+
+[package.extras]
+colors = ["colorama (>=0.4.3,<0.5.0)"]
+pipfile_deprecated_finder = ["pipreqs", "requirementslib", "tomlkit (>=0.5.3)"]
+requirements_deprecated_finder = ["pipreqs", "pip-api"]
+
+[[package]]
+category = "dev"
+description = "Low-level, pure Python DBus protocol wrapper."
+marker = "sys_platform == \"linux\""
+name = "jeepney"
+optional = false
+python-versions = ">=3.5"
+version = "0.4.3"
+
+[package.extras]
+dev = ["testpath"]
+
[[package]]
category = "dev"
description = "A very fast and expressive template engine."
@@ -364,6 +441,27 @@ MarkupSafe = ">=0.23"
[package.extras]
i18n = ["Babel (>=0.8)"]
+[[package]]
+category = "dev"
+description = "Store and access your passwords safely."
+name = "keyring"
+optional = false
+python-versions = ">=3.6"
+version = "21.3.0"
+
+[package.dependencies]
+SecretStorage = ">=3"
+jeepney = ">=0.4.2"
+pywin32-ctypes = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = "*"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black (>=0.3.7)", "pytest-cov", "pytest-mypy"]
+
[[package]]
category = "dev"
description = "Safely add untrusted strings to HTML/XML markup."
@@ -381,6 +479,27 @@ optional = false
python-versions = "*"
version = "0.6.1"
+[[package]]
+category = "dev"
+description = "Rolling backport of unittest.mock for all Pythons"
+marker = "python_version < \"3\""
+name = "mock"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "3.0.5"
+
+[package.dependencies]
+six = "*"
+
+[package.dependencies.funcsigs]
+python = "<3.3"
+version = ">=1"
+
+[package.extras]
+build = ["twine", "wheel", "blurb"]
+docs = ["sphinx"]
+test = ["pytest", "pytest-cov"]
+
[[package]]
category = "dev"
description = "More routines for operating on iterables, beyond itertools"
@@ -451,14 +570,6 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "0.8.0"
-[[package]]
-category = "dev"
-description = "Python Build Reasonableness"
-name = "pbr"
-optional = false
-python-versions = "*"
-version = "5.4.5"
-
[[package]]
category = "dev"
description = "Query metadatdata from sdists / bdists / installed packages."
@@ -504,6 +615,15 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.6.0"
+[[package]]
+category = "dev"
+description = "C parser in Python"
+marker = "sys_platform == \"linux\""
+name = "pycparser"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.20"
+
[[package]]
category = "dev"
description = "passive checker of Python programs"
@@ -583,17 +703,18 @@ description = "pytest: simple powerful testing with Python"
name = "pytest"
optional = false
python-versions = ">=3.5"
-version = "5.4.3"
+version = "6.0.1"
[package.dependencies]
atomicwrites = ">=1.0"
attrs = ">=17.4.0"
colorama = "*"
+iniconfig = "*"
more-itertools = ">=4.0.0"
packaging = "*"
pluggy = ">=0.12,<1.0"
-py = ">=1.5.0"
-wcwidth = "*"
+py = ">=1.8.2"
+toml = "*"
[package.dependencies.importlib-metadata]
python = "<3.8"
@@ -604,7 +725,7 @@ python = "<3.6"
version = ">=2.2.0"
[package.extras]
-checkqa-mypy = ["mypy (v0.761)"]
+checkqa_mypy = ["mypy (0.780)"]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
@@ -639,6 +760,40 @@ pytest = ">=4.6"
[package.extras]
testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "pytest-xdist", "virtualenv"]
+[[package]]
+category = "dev"
+description = "Thin-wrapper around the mock package for easier use with py.test"
+marker = "python_version < \"3\" or python_version >= \"3\""
+name = "pytest-mock"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.0.0"
+
+[package.dependencies]
+pytest = ">=2.7"
+
+[package.dependencies.mock]
+python = "<3.0"
+version = "*"
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+
+[[package]]
+category = "dev"
+description = "Thin-wrapper around the mock package for easier use with pytest"
+marker = "python_version >= \"3\""
+name = "pytest-mock"
+optional = false
+python-versions = ">=3.5"
+version = "3.2.0"
+
+[package.dependencies]
+pytest = ">=2.7"
+
+[package.extras]
+dev = ["pre-commit", "tox", "pytest-asyncio"]
+
[[package]]
category = "dev"
description = "pytest plugin to re-run tests to eliminate flaky failures"
@@ -672,6 +827,15 @@ optional = false
python-versions = "*"
version = "2020.1"
+[[package]]
+category = "dev"
+description = ""
+marker = "sys_platform == \"win32\""
+name = "pywin32-ctypes"
+optional = false
+python-versions = "*"
+version = "0.2.0"
+
[[package]]
category = "dev"
description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse"
@@ -689,6 +853,19 @@ six = "*"
[package.extras]
md = ["cmarkgfm (>=0.2.0)"]
+[[package]]
+category = "dev"
+description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects."
+name = "recommonmark"
+optional = false
+python-versions = "*"
+version = "0.6.0"
+
+[package.dependencies]
+commonmark = ">=0.8.1"
+docutils = ">=0.11"
+sphinx = ">=1.3.1"
+
[[package]]
category = "dev"
description = "Alternative regular expression module, to replace re."
@@ -696,7 +873,7 @@ marker = "python_version >= \"3.6\" and python_version < \"4.0\""
name = "regex"
optional = false
python-versions = "*"
-version = "2020.6.8"
+version = "2020.7.14"
[[package]]
category = "dev"
@@ -729,14 +906,14 @@ requests = ">=2.0.1,<3.0.0"
[[package]]
category = "dev"
-description = "reStructuredText linter"
-name = "restructuredtext-lint"
+description = "Validating URI References per RFC 3986"
+name = "rfc3986"
optional = false
python-versions = "*"
-version = "1.3.1"
+version = "1.4.0"
-[package.dependencies]
-docutils = ">=0.11,<1.0"
+[package.extras]
+idna2008 = ["idna"]
[[package]]
category = "dev"
@@ -747,6 +924,19 @@ optional = false
python-versions = "*"
version = "1.10.0"
+[[package]]
+category = "dev"
+description = "Python bindings to FreeDesktop.org Secret Service API"
+marker = "sys_platform == \"linux\""
+name = "secretstorage"
+optional = false
+python-versions = ">=3.5"
+version = "3.1.2"
+
+[package.dependencies]
+cryptography = "*"
+jeepney = ">=0.4.2"
+
[[package]]
category = "dev"
description = "Python 2 and 3 compatibility utilities"
@@ -801,7 +991,7 @@ description = "Python documentation generator"
name = "sphinx"
optional = false
python-versions = ">=3.5"
-version = "3.1.1"
+version = "3.2.0"
[package.dependencies]
Jinja2 = ">=2.3"
@@ -932,22 +1122,10 @@ version = "1.1.2"
[package.extras]
test = ["pytest", "mock"]
-[[package]]
-category = "dev"
-description = "Manage dynamic plugins for Python applications"
-name = "stevedore"
-optional = false
-python-versions = "*"
-version = "1.32.0"
-
-[package.dependencies]
-pbr = ">=2.0.0,<2.1.0 || >2.1.0"
-six = ">=1.10.0"
-
[[package]]
category = "dev"
description = "Python Library for Tom's Obvious, Minimal Language"
-marker = "python_version >= \"3.6\" and python_version < \"4.0\""
+marker = "python_version >= \"3.6\" and python_version < \"4.0\" or python_version >= \"3\""
name = "toml"
optional = false
python-versions = "*"
@@ -959,7 +1137,7 @@ description = "Fast, Extensible Progress Meter"
name = "tqdm"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
-version = "4.47.0"
+version = "4.48.2"
[package.extras]
dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"]
@@ -984,6 +1162,29 @@ tqdm = ">=4.14"
keyring = ["keyring"]
with-blake2 = ["pyblake2"]
+[[package]]
+category = "dev"
+description = "Collection of utilities for publishing packages on PyPI"
+name = "twine"
+optional = false
+python-versions = ">=3.6"
+version = "3.2.0"
+
+[package.dependencies]
+colorama = ">=0.4.3"
+keyring = ">=15.1"
+pkginfo = ">=1.4.2"
+readme-renderer = ">=21.0"
+requests = ">=2.20"
+requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0"
+rfc3986 = ">=1.4.0"
+setuptools = ">=0.7.0"
+tqdm = ">=4.14"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = "*"
+
[[package]]
category = "dev"
description = "a fork of Python 2 and 3 ast modules with type comment support"
@@ -999,8 +1200,8 @@ description = "Type Hints for Python"
marker = "python_version < \"3.5\""
name = "typing"
optional = false
-python-versions = "*"
-version = "3.7.4.1"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "3.7.4.3"
[[package]]
category = "dev"
@@ -1008,7 +1209,7 @@ description = "HTTP library with thread-safe connection pooling, file post, and
name = "urllib3"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
-version = "1.25.9"
+version = "1.25.10"
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
@@ -1018,7 +1219,7 @@ socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"]
[[package]]
category = "dev"
description = "Measures the displayed width of unicode strings in a terminal"
-marker = "python_version < \"3\" or python_version >= \"3\""
+marker = "python_version < \"3\""
name = "wcwidth"
optional = false
python-versions = "*"
@@ -1040,7 +1241,7 @@ version = "0.5.1"
[[package]]
category = "dev"
description = "Backport of pathlib-compatible object wrapper for zip files"
-marker = "python_version < \"3\" or python_version >= \"3\" and python_version < \"3.8\""
+marker = "python_version >= \"3\" and python_version < \"3.8\" or python_version < \"3\""
name = "zipp"
optional = false
python-versions = ">=2.7"
@@ -1055,8 +1256,30 @@ version = "*"
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
testing = ["pathlib2", "unittest2", "jaraco.itertools", "func-timeout"]
+[[package]]
+category = "dev"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+marker = "python_version >= \"3\" and python_version < \"3.8\""
+name = "zipp"
+optional = false
+python-versions = ">=3.6"
+version = "3.1.0"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
+testing = ["jaraco.itertools", "func-timeout"]
+
+[extras]
+coverage = []
+deploy = []
+docs = []
+format = []
+lint = []
+test = []
+
[metadata]
-content-hash = "426a93d5f99cf618045c2838d4c9e8f3fa36bbffc315ae32dec2ca2be737a7ef"
+content-hash = "de6760b7f3f560320576ddbc89cf631b582905d63a8a4225bac47f93e1bd8f1f"
+lock-version = "1.0"
python-versions = "~2.7 || ^3.5"
[metadata.files]
@@ -1065,7 +1288,8 @@ alabaster = [
{file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
]
alagitpull = [
- {file = "alagitpull-0.0.23.tar.gz", hash = "sha256:a56c1672f17eb3bb55c63f93fc71e7914e0a7fa0707ceefbf8d5e422bf4a9f8a"},
+ {file = "alagitpull-0.1.0-py2.py3-none-any.whl", hash = "sha256:5b9ed87ee410c6fa40a63a91d2f25919a10e20c6d39e080356b067f3ff6f379b"},
+ {file = "alagitpull-0.1.0.tar.gz", hash = "sha256:f6076f81a738c3291b598d8016b248edf5adf25d1d348c2599eff92c1eedaed9"},
]
appdirs = [
{file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
@@ -1099,6 +1323,36 @@ certifi = [
{file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"},
{file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"},
]
+cffi = [
+ {file = "cffi-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:66dd45eb9530e3dde8f7c009f84568bc7cac489b93d04ac86e3111fb46e470c2"},
+ {file = "cffi-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:4f53e4128c81ca3212ff4cf097c797ab44646a40b42ec02a891155cd7a2ba4d8"},
+ {file = "cffi-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:833401b15de1bb92791d7b6fb353d4af60dc688eaa521bd97203dcd2d124a7c1"},
+ {file = "cffi-1.14.1-cp27-cp27m-win32.whl", hash = "sha256:26f33e8f6a70c255767e3c3f957ccafc7f1f706b966e110b855bfe944511f1f9"},
+ {file = "cffi-1.14.1-cp27-cp27m-win_amd64.whl", hash = "sha256:b87dfa9f10a470eee7f24234a37d1d5f51e5f5fa9eeffda7c282e2b8f5162eb1"},
+ {file = "cffi-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:effd2ba52cee4ceff1a77f20d2a9f9bf8d50353c854a282b8760ac15b9833168"},
+ {file = "cffi-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bac0d6f7728a9cc3c1e06d4fcbac12aaa70e9379b3025b27ec1226f0e2d404cf"},
+ {file = "cffi-1.14.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d6033b4ffa34ef70f0b8086fd4c3df4bf801fee485a8a7d4519399818351aa8e"},
+ {file = "cffi-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8416ed88ddc057bab0526d4e4e9f3660f614ac2394b5e019a628cdfff3733849"},
+ {file = "cffi-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:892daa86384994fdf4856cb43c93f40cbe80f7f95bb5da94971b39c7f54b3a9c"},
+ {file = "cffi-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:c991112622baee0ae4d55c008380c32ecfd0ad417bcd0417ba432e6ba7328caa"},
+ {file = "cffi-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fcf32bf76dc25e30ed793145a57426064520890d7c02866eb93d3e4abe516948"},
+ {file = "cffi-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f960375e9823ae6a07072ff7f8a85954e5a6434f97869f50d0e41649a1c8144f"},
+ {file = "cffi-1.14.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a6d28e7f14ecf3b2ad67c4f106841218c8ab12a0683b1528534a6c87d2307af3"},
+ {file = "cffi-1.14.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:cda422d54ee7905bfc53ee6915ab68fe7b230cacf581110df4272ee10462aadc"},
+ {file = "cffi-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:4a03416915b82b81af5502459a8a9dd62a3c299b295dcdf470877cb948d655f2"},
+ {file = "cffi-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:4ce1e995aeecf7cc32380bc11598bfdfa017d592259d5da00fc7ded11e61d022"},
+ {file = "cffi-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e23cb7f1d8e0f93addf0cae3c5b6f00324cccb4a7949ee558d7b6ca973ab8ae9"},
+ {file = "cffi-1.14.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ddff0b2bd7edcc8c82d1adde6dbbf5e60d57ce985402541cd2985c27f7bec2a0"},
+ {file = "cffi-1.14.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f90c2267101010de42f7273c94a1f026e56cbc043f9330acd8a80e64300aba33"},
+ {file = "cffi-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:3cd2c044517f38d1b577f05927fb9729d3396f1d44d0c659a445599e79519792"},
+ {file = "cffi-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fa72a52a906425416f41738728268072d5acfd48cbe7796af07a923236bcf96"},
+ {file = "cffi-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:267adcf6e68d77ba154334a3e4fc921b8e63cbb38ca00d33d40655d4228502bc"},
+ {file = "cffi-1.14.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d3148b6ba3923c5850ea197a91a42683f946dba7e8eb82dfa211ab7e708de939"},
+ {file = "cffi-1.14.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:98be759efdb5e5fa161e46d404f4e0ce388e72fbf7d9baf010aff16689e22abe"},
+ {file = "cffi-1.14.1-cp38-cp38-win32.whl", hash = "sha256:6923d077d9ae9e8bacbdb1c07ae78405a9306c8fd1af13bfa06ca891095eb995"},
+ {file = "cffi-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:b1d6ebc891607e71fd9da71688fcf332a6630b7f5b7f5549e6e631821c0e5d90"},
+ {file = "cffi-1.14.1.tar.gz", hash = "sha256:b2a2b0d276a136146e012154baefaea2758ef1f56ae9f4e01c612b0831e0bd2f"},
+]
chardet = [
{file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"},
{file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"},
@@ -1108,14 +1362,18 @@ click = [
{file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
]
codecov = [
- {file = "codecov-2.1.7-py2.py3-none-any.whl", hash = "sha256:b67bb8029e8340a7bf22c71cbece5bd18c96261fdebc2f105ee4d5a005bc8728"},
- {file = "codecov-2.1.7-py3.8.egg", hash = "sha256:d8b8109f44edad03b24f5f189dac8de9b1e3dc3c791fa37eeaf8c7381503ec34"},
- {file = "codecov-2.1.7.tar.gz", hash = "sha256:491938ad774ea94a963d5d16354c7299e90422a33a353ba0d38d0943ed1d5091"},
+ {file = "codecov-2.1.8-py2.py3-none-any.whl", hash = "sha256:65e8a8008e43eb45a9404bf68f8d4a60d36de3827ef2287971c94940128eba1e"},
+ {file = "codecov-2.1.8-py3.8.egg", hash = "sha256:fa7985ac6a3886cf68e3420ee1b5eb4ed30c4bdceec0f332d17ab69f545fbc90"},
+ {file = "codecov-2.1.8.tar.gz", hash = "sha256:0be9cd6358cc6a3c01a1586134b0fb524dfa65ccbec3a40e9f28d5f976676ba2"},
]
colorama = [
{file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"},
{file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"},
]
+commonmark = [
+ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
+ {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
+]
configparser = [
{file = "configparser-4.0.2-py2.py3-none-any.whl", hash = "sha256:254c1d9c79f60c45dfde850850883d5aaa7f19a23f13561243a050d5a7c3fe4c"},
{file = "configparser-4.0.2.tar.gz", hash = "sha256:c7d282687a5308319bf3d2e7706e575c635b0a470342641c93bea0ea3b5331df"},
@@ -1125,41 +1383,61 @@ contextlib2 = [
{file = "contextlib2-0.6.0.post1.tar.gz", hash = "sha256:01f490098c18b19d2bd5bb5dc445b2054d2fa97f09a4280ba2c5f3c394c8162e"},
]
coverage = [
- {file = "coverage-5.1-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:0cb4be7e784dcdc050fc58ef05b71aa8e89b7e6636b99967fadbdba694cf2b65"},
- {file = "coverage-5.1-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:c317eaf5ff46a34305b202e73404f55f7389ef834b8dbf4da09b9b9b37f76dd2"},
- {file = "coverage-5.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b83835506dfc185a319031cf853fa4bb1b3974b1f913f5bb1a0f3d98bdcded04"},
- {file = "coverage-5.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5f2294dbf7875b991c381e3d5af2bcc3494d836affa52b809c91697449d0eda6"},
- {file = "coverage-5.1-cp27-cp27m-win32.whl", hash = "sha256:de807ae933cfb7f0c7d9d981a053772452217df2bf38e7e6267c9cbf9545a796"},
- {file = "coverage-5.1-cp27-cp27m-win_amd64.whl", hash = "sha256:bf9cb9a9fd8891e7efd2d44deb24b86d647394b9705b744ff6f8261e6f29a730"},
- {file = "coverage-5.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:acf3763ed01af8410fc36afea23707d4ea58ba7e86a8ee915dfb9ceff9ef69d0"},
- {file = "coverage-5.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:dec5202bfe6f672d4511086e125db035a52b00f1648d6407cc8e526912c0353a"},
- {file = "coverage-5.1-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:7a5bdad4edec57b5fb8dae7d3ee58622d626fd3a0be0dfceda162a7035885ecf"},
- {file = "coverage-5.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:1601e480b9b99697a570cea7ef749e88123c04b92d84cedaa01e117436b4a0a9"},
- {file = "coverage-5.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:dbe8c6ae7534b5b024296464f387d57c13caa942f6d8e6e0346f27e509f0f768"},
- {file = "coverage-5.1-cp35-cp35m-win32.whl", hash = "sha256:a027ef0492ede1e03a8054e3c37b8def89a1e3c471482e9f046906ba4f2aafd2"},
- {file = "coverage-5.1-cp35-cp35m-win_amd64.whl", hash = "sha256:0e61d9803d5851849c24f78227939c701ced6704f337cad0a91e0972c51c1ee7"},
- {file = "coverage-5.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:2d27a3f742c98e5c6b461ee6ef7287400a1956c11421eb574d843d9ec1f772f0"},
- {file = "coverage-5.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:66460ab1599d3cf894bb6baee8c684788819b71a5dc1e8fa2ecc152e5d752019"},
- {file = "coverage-5.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5c542d1e62eece33c306d66fe0a5c4f7f7b3c08fecc46ead86d7916684b36d6c"},
- {file = "coverage-5.1-cp36-cp36m-win32.whl", hash = "sha256:2742c7515b9eb368718cd091bad1a1b44135cc72468c731302b3d641895b83d1"},
- {file = "coverage-5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:dead2ddede4c7ba6cb3a721870f5141c97dc7d85a079edb4bd8d88c3ad5b20c7"},
- {file = "coverage-5.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:01333e1bd22c59713ba8a79f088b3955946e293114479bbfc2e37d522be03355"},
- {file = "coverage-5.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e1ea316102ea1e1770724db01998d1603ed921c54a86a2efcb03428d5417e489"},
- {file = "coverage-5.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:adeb4c5b608574a3d647011af36f7586811a2c1197c861aedb548dd2453b41cd"},
- {file = "coverage-5.1-cp37-cp37m-win32.whl", hash = "sha256:782caea581a6e9ff75eccda79287daefd1d2631cc09d642b6ee2d6da21fc0a4e"},
- {file = "coverage-5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:00f1d23f4336efc3b311ed0d807feb45098fc86dee1ca13b3d6768cdab187c8a"},
- {file = "coverage-5.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:402e1744733df483b93abbf209283898e9f0d67470707e3c7516d84f48524f55"},
- {file = "coverage-5.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a3f3654d5734a3ece152636aad89f58afc9213c6520062db3978239db122f03c"},
- {file = "coverage-5.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6402bd2fdedabbdb63a316308142597534ea8e1895f4e7d8bf7476c5e8751fef"},
- {file = "coverage-5.1-cp38-cp38-win32.whl", hash = "sha256:8fa0cbc7ecad630e5b0f4f35b0f6ad419246b02bc750de7ac66db92667996d24"},
- {file = "coverage-5.1-cp38-cp38-win_amd64.whl", hash = "sha256:79a3cfd6346ce6c13145731d39db47b7a7b859c0272f02cdb89a3bdcbae233a0"},
- {file = "coverage-5.1-cp39-cp39-win32.whl", hash = "sha256:a82b92b04a23d3c8a581fc049228bafde988abacba397d57ce95fe95e0338ab4"},
- {file = "coverage-5.1-cp39-cp39-win_amd64.whl", hash = "sha256:bb28a7245de68bf29f6fb199545d072d1036a1917dca17a1e75bbb919e14ee8e"},
- {file = "coverage-5.1.tar.gz", hash = "sha256:f90bfc4ad18450c80b024036eaf91e4a246ae287701aaa88eaebebf150868052"},
-]
-doc8 = [
- {file = "doc8-0.8.1-py2.py3-none-any.whl", hash = "sha256:4d58a5c8c56cedd2b2c9d6e3153be5d956cf72f6051128f0f2255c66227df721"},
- {file = "doc8-0.8.1.tar.gz", hash = "sha256:4d1df12598807cf08ffa9a1d5ef42d229ee0de42519da01b768ff27211082c12"},
+ {file = "coverage-5.2.1-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:40f70f81be4d34f8d491e55936904db5c527b0711b2a46513641a5729783c2e4"},
+ {file = "coverage-5.2.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:675192fca634f0df69af3493a48224f211f8db4e84452b08d5fcebb9167adb01"},
+ {file = "coverage-5.2.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2fcc8b58953d74d199a1a4d633df8146f0ac36c4e720b4a1997e9b6327af43a8"},
+ {file = "coverage-5.2.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:64c4f340338c68c463f1b56e3f2f0423f7b17ba6c3febae80b81f0e093077f59"},
+ {file = "coverage-5.2.1-cp27-cp27m-win32.whl", hash = "sha256:52f185ffd3291196dc1aae506b42e178a592b0b60a8610b108e6ad892cfc1bb3"},
+ {file = "coverage-5.2.1-cp27-cp27m-win_amd64.whl", hash = "sha256:30bc103587e0d3df9e52cd9da1dd915265a22fad0b72afe54daf840c984b564f"},
+ {file = "coverage-5.2.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:9ea749fd447ce7fb1ac71f7616371f04054d969d412d37611716721931e36efd"},
+ {file = "coverage-5.2.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ce7866f29d3025b5b34c2e944e66ebef0d92e4a4f2463f7266daa03a1332a651"},
+ {file = "coverage-5.2.1-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:4869ab1c1ed33953bb2433ce7b894a28d724b7aa76c19b11e2878034a4e4680b"},
+ {file = "coverage-5.2.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a3ee9c793ffefe2944d3a2bd928a0e436cd0ac2d9e3723152d6fd5398838ce7d"},
+ {file = "coverage-5.2.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:28f42dc5172ebdc32622a2c3f7ead1b836cdbf253569ae5673f499e35db0bac3"},
+ {file = "coverage-5.2.1-cp35-cp35m-win32.whl", hash = "sha256:e26c993bd4b220429d4ec8c1468eca445a4064a61c74ca08da7429af9bc53bb0"},
+ {file = "coverage-5.2.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4186fc95c9febeab5681bc3248553d5ec8c2999b8424d4fc3a39c9cba5796962"},
+ {file = "coverage-5.2.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:b360d8fd88d2bad01cb953d81fd2edd4be539df7bfec41e8753fe9f4456a5082"},
+ {file = "coverage-5.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1adb6be0dcef0cf9434619d3b892772fdb48e793300f9d762e480e043bd8e716"},
+ {file = "coverage-5.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:098a703d913be6fbd146a8c50cc76513d726b022d170e5e98dc56d958fd592fb"},
+ {file = "coverage-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:962c44070c281d86398aeb8f64e1bf37816a4dfc6f4c0f114756b14fc575621d"},
+ {file = "coverage-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1ed2bdb27b4c9fc87058a1cb751c4df8752002143ed393899edb82b131e0546"},
+ {file = "coverage-5.2.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:c890728a93fffd0407d7d37c1e6083ff3f9f211c83b4316fae3778417eab9811"},
+ {file = "coverage-5.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:538f2fd5eb64366f37c97fdb3077d665fa946d2b6d95447622292f38407f9258"},
+ {file = "coverage-5.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:27ca5a2bc04d68f0776f2cdcb8bbd508bbe430a7bf9c02315cd05fb1d86d0034"},
+ {file = "coverage-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:aab75d99f3f2874733946a7648ce87a50019eb90baef931698f96b76b6769a46"},
+ {file = "coverage-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:c2ff24df02a125b7b346c4c9078c8936da06964cc2d276292c357d64378158f8"},
+ {file = "coverage-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:304fbe451698373dc6653772c72c5d5e883a4aadaf20343592a7abb2e643dae0"},
+ {file = "coverage-5.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c96472b8ca5dc135fb0aa62f79b033f02aa434fb03a8b190600a5ae4102df1fd"},
+ {file = "coverage-5.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8505e614c983834239f865da2dd336dcf9d72776b951d5dfa5ac36b987726e1b"},
+ {file = "coverage-5.2.1-cp38-cp38-win32.whl", hash = "sha256:700997b77cfab016533b3e7dbc03b71d33ee4df1d79f2463a318ca0263fc29dd"},
+ {file = "coverage-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:46794c815e56f1431c66d81943fa90721bb858375fb36e5903697d5eef88627d"},
+ {file = "coverage-5.2.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:16042dc7f8e632e0dcd5206a5095ebd18cb1d005f4c89694f7f8aafd96dd43a3"},
+ {file = "coverage-5.2.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c1bbb628ed5192124889b51204de27c575b3ffc05a5a91307e7640eff1d48da4"},
+ {file = "coverage-5.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4f6428b55d2916a69f8d6453e48a505c07b2245653b0aa9f0dee38785939f5e4"},
+ {file = "coverage-5.2.1-cp39-cp39-win32.whl", hash = "sha256:9e536783a5acee79a9b308be97d3952b662748c4037b6a24cbb339dc7ed8eb89"},
+ {file = "coverage-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:b8f58c7db64d8f27078cbf2a4391af6aa4e4767cc08b37555c4ae064b8558d9b"},
+ {file = "coverage-5.2.1.tar.gz", hash = "sha256:a34cb28e0747ea15e82d13e14de606747e9e484fb28d63c999483f5d5188e89b"},
+]
+cryptography = [
+ {file = "cryptography-3.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:ab49edd5bea8d8b39a44b3db618e4783ef84c19c8b47286bf05dfdb3efb01c83"},
+ {file = "cryptography-3.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:124af7255ffc8e964d9ff26971b3a6153e1a8a220b9a685dc407976ecb27a06a"},
+ {file = "cryptography-3.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:51e40123083d2f946794f9fe4adeeee2922b581fa3602128ce85ff813d85b81f"},
+ {file = "cryptography-3.0-cp27-cp27m-win32.whl", hash = "sha256:dea0ba7fe6f9461d244679efa968d215ea1f989b9c1957d7f10c21e5c7c09ad6"},
+ {file = "cryptography-3.0-cp27-cp27m-win_amd64.whl", hash = "sha256:8ecf9400d0893836ff41b6f977a33972145a855b6efeb605b49ee273c5e6469f"},
+ {file = "cryptography-3.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c608ff4d4adad9e39b5057de43657515c7da1ccb1807c3a27d4cf31fc923b4b"},
+ {file = "cryptography-3.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:bec7568c6970b865f2bcebbe84d547c52bb2abadf74cefce396ba07571109c67"},
+ {file = "cryptography-3.0-cp35-abi3-macosx_10_10_x86_64.whl", hash = "sha256:0cbfed8ea74631fe4de00630f4bb592dad564d57f73150d6f6796a24e76c76cd"},
+ {file = "cryptography-3.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:a09fd9c1cca9a46b6ad4bea0a1f86ab1de3c0c932364dbcf9a6c2a5eeb44fa77"},
+ {file = "cryptography-3.0-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:ce82cc06588e5cbc2a7df3c8a9c778f2cb722f56835a23a68b5a7264726bb00c"},
+ {file = "cryptography-3.0-cp35-cp35m-win32.whl", hash = "sha256:9367d00e14dee8d02134c6c9524bb4bd39d4c162456343d07191e2a0b5ec8b3b"},
+ {file = "cryptography-3.0-cp35-cp35m-win_amd64.whl", hash = "sha256:384d7c681b1ab904fff3400a6909261cae1d0939cc483a68bdedab282fb89a07"},
+ {file = "cryptography-3.0-cp36-cp36m-win32.whl", hash = "sha256:4d355f2aee4a29063c10164b032d9fa8a82e2c30768737a2fd56d256146ad559"},
+ {file = "cryptography-3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:45741f5499150593178fc98d2c1a9c6722df88b99c821ad6ae298eff0ba1ae71"},
+ {file = "cryptography-3.0-cp37-cp37m-win32.whl", hash = "sha256:8ecef21ac982aa78309bb6f092d1677812927e8b5ef204a10c326fc29f1367e2"},
+ {file = "cryptography-3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4b9303507254ccb1181d1803a2080a798910ba89b1a3c9f53639885c90f7a756"},
+ {file = "cryptography-3.0-cp38-cp38-win32.whl", hash = "sha256:8713ddb888119b0d2a1462357d5946b8911be01ddbf31451e1d07eaa5077a261"},
+ {file = "cryptography-3.0-cp38-cp38-win_amd64.whl", hash = "sha256:bea0b0468f89cdea625bb3f692cd7a4222d80a6bdafd6fb923963f2b9da0e15f"},
+ {file = "cryptography-3.0.tar.gz", hash = "sha256:8e924dbc025206e97756e8903039662aa58aa9ba357d8e1d8fc29e3092322053"},
]
docutils = [
{file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
@@ -1182,6 +1460,9 @@ functools32 = [
{file = "functools32-3.2.3-2.tar.gz", hash = "sha256:f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d"},
{file = "functools32-3.2.3-2.zip", hash = "sha256:89d824aa6c358c421a234d7f9ee0bd75933a67c29588ce50aaa3acdf4d403fa0"},
]
+future = [
+ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
+]
futures = [
{file = "futures-3.3.0-py2-none-any.whl", hash = "sha256:49b3f5b064b6e3afc3316421a3f25f66c137ae88f068abbf72830170033c5e16"},
{file = "futures-3.3.0.tar.gz", hash = "sha256:7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794"},
@@ -1198,14 +1479,28 @@ importlib-metadata = [
{file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"},
{file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"},
]
+iniconfig = [
+ {file = "iniconfig-1.0.1-py3-none-any.whl", hash = "sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437"},
+ {file = "iniconfig-1.0.1.tar.gz", hash = "sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69"},
+]
isort = [
{file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"},
{file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"},
+ {file = "isort-5.3.2-py3-none-any.whl", hash = "sha256:5196bd2f5b23dc91215734b1c96c6d28390061d69860a948094c12635d6d64e6"},
+ {file = "isort-5.3.2.tar.gz", hash = "sha256:ba83762132a8661d3525f87a86549712fb7d8da79eeb452e01f327ada9e87920"},
+]
+jeepney = [
+ {file = "jeepney-0.4.3-py3-none-any.whl", hash = "sha256:d6c6b49683446d2407d2fe3acb7a368a77ff063f9182fe427da15d622adc24cf"},
+ {file = "jeepney-0.4.3.tar.gz", hash = "sha256:3479b861cc2b6407de5188695fa1a8d57e5072d7059322469b62628869b8e36e"},
]
jinja2 = [
{file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
{file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
]
+keyring = [
+ {file = "keyring-21.3.0-py3-none-any.whl", hash = "sha256:e7a17caf40c40b6bb8c4772224a487e4a63013560ed0c521065aeba7ecd42182"},
+ {file = "keyring-21.3.0.tar.gz", hash = "sha256:22df6abfed49912fc560806030051067fba9f0069cffa79da72899aeea4ccbd5"},
+]
markupsafe = [
{file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"},
{file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"},
@@ -1234,12 +1529,21 @@ markupsafe = [
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
]
mccabe = [
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
]
+mock = [
+ {file = "mock-3.0.5-py2.py3-none-any.whl", hash = "sha256:d157e52d4e5b938c550f39eb2fd15610db062441a9c2747d3dbfa9298211d0f8"},
+ {file = "mock-3.0.5.tar.gz", hash = "sha256:83657d894c90d5681d62155c82bda9c1187827525880eda8ff5df4ec813437c3"},
+]
more-itertools = [
{file = "more-itertools-5.0.0.tar.gz", hash = "sha256:38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4"},
{file = "more_itertools-5.0.0-py2-none-any.whl", hash = "sha256:c0a5785b1109a6bd7fac76d6837fd1feca158e54e521ccd2ae8bfe393cc9d4fc"},
@@ -1261,10 +1565,6 @@ pathspec = [
{file = "pathspec-0.8.0-py2.py3-none-any.whl", hash = "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0"},
{file = "pathspec-0.8.0.tar.gz", hash = "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061"},
]
-pbr = [
- {file = "pbr-5.4.5-py2.py3-none-any.whl", hash = "sha256:579170e23f8e0c2f24b0de612f71f648eccb79fb1322c814ae6b3c07b5ba23e8"},
- {file = "pbr-5.4.5.tar.gz", hash = "sha256:07f558fece33b05caf857474a366dfcc00562bca13dd8b47b2b3e22d9f9bf55c"},
-]
pkginfo = [
{file = "pkginfo-1.5.0.1-py2.py3-none-any.whl", hash = "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"},
{file = "pkginfo-1.5.0.1.tar.gz", hash = "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb"},
@@ -1281,6 +1581,10 @@ pycodestyle = [
{file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"},
{file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"},
]
+pycparser = [
+ {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
+ {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
+]
pyflakes = [
{file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"},
{file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"},
@@ -1298,8 +1602,8 @@ pyparsing = [
pytest = [
{file = "pytest-4.6.11-py2.py3-none-any.whl", hash = "sha256:a00a7d79cbbdfa9d21e7d0298392a8dd4123316bfac545075e6f8f24c94d8c97"},
{file = "pytest-4.6.11.tar.gz", hash = "sha256:50fa82392f2120cc3ec2ca0a75ee615be4c479e66669789771f1758332be4353"},
- {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"},
- {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"},
+ {file = "pytest-6.0.1-py3-none-any.whl", hash = "sha256:8b6007800c53fdacd5a5c192203f4e531eb2a1540ad9c752e052ec0f7143dbad"},
+ {file = "pytest-6.0.1.tar.gz", hash = "sha256:85228d75db9f45e06e57ef9bf4429267f81ac7c0d742cc9ed63d09886a9fe6f4"},
]
pytest-cov = [
{file = "pytest-cov-2.9.0.tar.gz", hash = "sha256:b6a814b8ed6247bd81ff47f038511b57fe1ce7f4cc25b9106f1a4b106f1d9322"},
@@ -1307,6 +1611,12 @@ pytest-cov = [
{file = "pytest-cov-2.10.0.tar.gz", hash = "sha256:1a629dc9f48e53512fcbfda6b07de490c374b0c83c55ff7a1720b3fccff0ac87"},
{file = "pytest_cov-2.10.0-py2.py3-none-any.whl", hash = "sha256:6e6d18092dce6fad667cd7020deed816f858ad3b49d5b5e2b1cc1c97a4dba65c"},
]
+pytest-mock = [
+ {file = "pytest-mock-2.0.0.tar.gz", hash = "sha256:b35eb281e93aafed138db25c8772b95d3756108b601947f89af503f8c629413f"},
+ {file = "pytest_mock-2.0.0-py2.py3-none-any.whl", hash = "sha256:cb67402d87d5f53c579263d37971a164743dc33c159dfb4fb4a86f37c5552307"},
+ {file = "pytest-mock-3.2.0.tar.gz", hash = "sha256:7122d55505d5ed5a6f3df940ad174b3f606ecae5e9bc379569cdcbd4cd9d2b83"},
+ {file = "pytest_mock-3.2.0-py3-none-any.whl", hash = "sha256:5564c7cd2569b603f8451ec77928083054d8896046830ca763ed68f4112d17c7"},
+]
pytest-rerunfailures = [
{file = "pytest-rerunfailures-8.0.tar.gz", hash = "sha256:17c1236b9f8463f74a5df6c807f301c53c2ea1ab81b7509b7e23fab3b7cbe812"},
{file = "pytest_rerunfailures-8.0-py2.py3-none-any.whl", hash = "sha256:4997cda1b82f74cc0c280f6a5a0470d36deb318e3d8bd6da71efc32a3e0c9ae4"},
@@ -1317,32 +1627,40 @@ pytz = [
{file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"},
{file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"},
]
+pywin32-ctypes = [
+ {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"},
+ {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"},
+]
readme-renderer = [
{file = "readme_renderer-26.0-py2.py3-none-any.whl", hash = "sha256:cc4957a803106e820d05d14f71033092537a22daa4f406dfbdd61177e0936376"},
{file = "readme_renderer-26.0.tar.gz", hash = "sha256:cbe9db71defedd2428a1589cdc545f9bd98e59297449f69d721ef8f1cfced68d"},
]
+recommonmark = [
+ {file = "recommonmark-0.6.0-py2.py3-none-any.whl", hash = "sha256:2ec4207a574289355d5b6ae4ae4abb29043346ca12cdd5f07d374dc5987d2852"},
+ {file = "recommonmark-0.6.0.tar.gz", hash = "sha256:29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb"},
+]
regex = [
- {file = "regex-2020.6.8-cp27-cp27m-win32.whl", hash = "sha256:fbff901c54c22425a5b809b914a3bfaf4b9570eee0e5ce8186ac71eb2025191c"},
- {file = "regex-2020.6.8-cp27-cp27m-win_amd64.whl", hash = "sha256:112e34adf95e45158c597feea65d06a8124898bdeac975c9087fe71b572bd938"},
- {file = "regex-2020.6.8-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:92d8a043a4241a710c1cf7593f5577fbb832cf6c3a00ff3fc1ff2052aff5dd89"},
- {file = "regex-2020.6.8-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bae83f2a56ab30d5353b47f9b2a33e4aac4de9401fb582b55c42b132a8ac3868"},
- {file = "regex-2020.6.8-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:b2ba0f78b3ef375114856cbdaa30559914d081c416b431f2437f83ce4f8b7f2f"},
- {file = "regex-2020.6.8-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:95fa7726d073c87141f7bbfb04c284901f8328e2d430eeb71b8ffdd5742a5ded"},
- {file = "regex-2020.6.8-cp36-cp36m-win32.whl", hash = "sha256:e3cdc9423808f7e1bb9c2e0bdb1c9dc37b0607b30d646ff6faf0d4e41ee8fee3"},
- {file = "regex-2020.6.8-cp36-cp36m-win_amd64.whl", hash = "sha256:c78e66a922de1c95a208e4ec02e2e5cf0bb83a36ceececc10a72841e53fbf2bd"},
- {file = "regex-2020.6.8-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:08997a37b221a3e27d68ffb601e45abfb0093d39ee770e4257bd2f5115e8cb0a"},
- {file = "regex-2020.6.8-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2f6f211633ee8d3f7706953e9d3edc7ce63a1d6aad0be5dcee1ece127eea13ae"},
- {file = "regex-2020.6.8-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:55b4c25cbb3b29f8d5e63aeed27b49fa0f8476b0d4e1b3171d85db891938cc3a"},
- {file = "regex-2020.6.8-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:89cda1a5d3e33ec9e231ece7307afc101b5217523d55ef4dc7fb2abd6de71ba3"},
- {file = "regex-2020.6.8-cp37-cp37m-win32.whl", hash = "sha256:690f858d9a94d903cf5cada62ce069b5d93b313d7d05456dbcd99420856562d9"},
- {file = "regex-2020.6.8-cp37-cp37m-win_amd64.whl", hash = "sha256:1700419d8a18c26ff396b3b06ace315b5f2a6e780dad387e4c48717a12a22c29"},
- {file = "regex-2020.6.8-cp38-cp38-manylinux1_i686.whl", hash = "sha256:654cb773b2792e50151f0e22be0f2b6e1c3a04c5328ff1d9d59c0398d37ef610"},
- {file = "regex-2020.6.8-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:52e1b4bef02f4040b2fd547357a170fc1146e60ab310cdbdd098db86e929b387"},
- {file = "regex-2020.6.8-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:cf59bbf282b627130f5ba68b7fa3abdb96372b24b66bdf72a4920e8153fc7910"},
- {file = "regex-2020.6.8-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:5aaa5928b039ae440d775acea11d01e42ff26e1561c0ffcd3d805750973c6baf"},
- {file = "regex-2020.6.8-cp38-cp38-win32.whl", hash = "sha256:97712e0d0af05febd8ab63d2ef0ab2d0cd9deddf4476f7aa153f76feef4b2754"},
- {file = "regex-2020.6.8-cp38-cp38-win_amd64.whl", hash = "sha256:6ad8663c17db4c5ef438141f99e291c4d4edfeaacc0ce28b5bba2b0bf273d9b5"},
- {file = "regex-2020.6.8.tar.gz", hash = "sha256:e9b64e609d37438f7d6e68c2546d2cb8062f3adb27e6336bc129b51be20773ac"},
+ {file = "regex-2020.7.14-cp27-cp27m-win32.whl", hash = "sha256:e46d13f38cfcbb79bfdb2964b0fe12561fe633caf964a77a5f8d4e45fe5d2ef7"},
+ {file = "regex-2020.7.14-cp27-cp27m-win_amd64.whl", hash = "sha256:6961548bba529cac7c07af2fd4d527c5b91bb8fe18995fed6044ac22b3d14644"},
+ {file = "regex-2020.7.14-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c50a724d136ec10d920661f1442e4a8b010a4fe5aebd65e0c2241ea41dbe93dc"},
+ {file = "regex-2020.7.14-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8a51f2c6d1f884e98846a0a9021ff6861bdb98457879f412fdc2b42d14494067"},
+ {file = "regex-2020.7.14-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:9c568495e35599625f7b999774e29e8d6b01a6fb684d77dee1f56d41b11b40cd"},
+ {file = "regex-2020.7.14-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:51178c738d559a2d1071ce0b0f56e57eb315bcf8f7d4cf127674b533e3101f88"},
+ {file = "regex-2020.7.14-cp36-cp36m-win32.whl", hash = "sha256:9eddaafb3c48e0900690c1727fba226c4804b8e6127ea409689c3bb492d06de4"},
+ {file = "regex-2020.7.14-cp36-cp36m-win_amd64.whl", hash = "sha256:14a53646369157baa0499513f96091eb70382eb50b2c82393d17d7ec81b7b85f"},
+ {file = "regex-2020.7.14-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:1269fef3167bb52631ad4fa7dd27bf635d5a0790b8e6222065d42e91bede4162"},
+ {file = "regex-2020.7.14-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d0a5095d52b90ff38592bbdc2644f17c6d495762edf47d876049cfd2968fbccf"},
+ {file = "regex-2020.7.14-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:4c037fd14c5f4e308b8370b447b469ca10e69427966527edcab07f52d88388f7"},
+ {file = "regex-2020.7.14-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bc3d98f621898b4a9bc7fecc00513eec8f40b5b83913d74ccb445f037d58cd89"},
+ {file = "regex-2020.7.14-cp37-cp37m-win32.whl", hash = "sha256:46bac5ca10fb748d6c55843a931855e2727a7a22584f302dd9bb1506e69f83f6"},
+ {file = "regex-2020.7.14-cp37-cp37m-win_amd64.whl", hash = "sha256:0dc64ee3f33cd7899f79a8d788abfbec168410be356ed9bd30bbd3f0a23a7204"},
+ {file = "regex-2020.7.14-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5ea81ea3dbd6767873c611687141ec7b06ed8bab43f68fad5b7be184a920dc99"},
+ {file = "regex-2020.7.14-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bbb332d45b32df41200380fff14712cb6093b61bd142272a10b16778c418e98e"},
+ {file = "regex-2020.7.14-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:c11d6033115dc4887c456565303f540c44197f4fc1a2bfb192224a301534888e"},
+ {file = "regex-2020.7.14-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:75aaa27aa521a182824d89e5ab0a1d16ca207318a6b65042b046053cfc8ed07a"},
+ {file = "regex-2020.7.14-cp38-cp38-win32.whl", hash = "sha256:d6cff2276e502b86a25fd10c2a96973fdb45c7a977dca2138d661417f3728341"},
+ {file = "regex-2020.7.14-cp38-cp38-win_amd64.whl", hash = "sha256:7a2dd66d2d4df34fa82c9dc85657c5e019b87932019947faece7983f2089a840"},
+ {file = "regex-2020.7.14.tar.gz", hash = "sha256:3a3af27a8d23143c49a3420efe5b3f8cf1a48c6fc8bc6856b03f638abc1833bb"},
]
requests = [
{file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"},
@@ -1352,8 +1670,9 @@ requests-toolbelt = [
{file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"},
{file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"},
]
-restructuredtext-lint = [
- {file = "restructuredtext_lint-1.3.1.tar.gz", hash = "sha256:470e53b64817211a42805c3a104d2216f6f5834b22fe7adb637d1de4d6501fb8"},
+rfc3986 = [
+ {file = "rfc3986-1.4.0-py2.py3-none-any.whl", hash = "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50"},
+ {file = "rfc3986-1.4.0.tar.gz", hash = "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d"},
]
scandir = [
{file = "scandir-1.10.0-cp27-cp27m-win32.whl", hash = "sha256:92c85ac42f41ffdc35b6da57ed991575bdbe69db895507af88b9f499b701c188"},
@@ -1368,6 +1687,10 @@ scandir = [
{file = "scandir-1.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b24086f2375c4a094a6b51e78b4cf7ca16c721dcee2eddd7aa6494b42d6d519d"},
{file = "scandir-1.10.0.tar.gz", hash = "sha256:4d4631f6062e658e9007ab3149a9b914f3548cb38bfb021c64f39a025ce578ae"},
]
+secretstorage = [
+ {file = "SecretStorage-3.1.2-py3-none-any.whl", hash = "sha256:b5ec909dde94d4ae2fa26af7c089036997030f0cf0a5cb372b4cccabd81c143b"},
+ {file = "SecretStorage-3.1.2.tar.gz", hash = "sha256:15da8a989b65498e29be338b3b279965f1b8f09b9668bd8010da183024c8bff6"},
+]
six = [
{file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
{file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
@@ -1379,8 +1702,8 @@ snowballstemmer = [
sphinx = [
{file = "Sphinx-1.8.5-py2.py3-none-any.whl", hash = "sha256:9f3e17c64b34afc653d7c5ec95766e03043cc6d80b0de224f59b6b6e19d37c3c"},
{file = "Sphinx-1.8.5.tar.gz", hash = "sha256:c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08"},
- {file = "Sphinx-3.1.1-py3-none-any.whl", hash = "sha256:97c9e3bcce2f61d9f5edf131299ee9d1219630598d9f9a8791459a4d9e815be5"},
- {file = "Sphinx-3.1.1.tar.gz", hash = "sha256:74fbead182a611ce1444f50218a1c5fc70b6cc547f64948f5182fb30a2a20258"},
+ {file = "Sphinx-3.2.0-py3-none-any.whl", hash = "sha256:f7db5b76c42c8b5ef31853c2de7178ef378b985d7793829ec071e120dac1d0ca"},
+ {file = "Sphinx-3.2.0.tar.gz", hash = "sha256:cf2d5bc3c6c930ab0a1fbef3ad8a82994b1bf4ae923f8098a05c7e5516f07177"},
]
sphinx-issues = [
{file = "sphinx-issues-1.2.0.tar.gz", hash = "sha256:845294736c7ac4c09c706f13431f709e1164037cbb00f6bf623ae16eccf509f3"},
@@ -1414,21 +1737,19 @@ sphinxcontrib-websupport = [
{file = "sphinxcontrib-websupport-1.1.2.tar.gz", hash = "sha256:1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc"},
{file = "sphinxcontrib_websupport-1.1.2-py2.py3-none-any.whl", hash = "sha256:e02f717baf02d0b6c3dd62cf81232ffca4c9d5c331e03766982e3ff9f1d2bc3f"},
]
-stevedore = [
- {file = "stevedore-1.32.0-py2.py3-none-any.whl", hash = "sha256:a4e7dc759fb0f2e3e2f7d8ffe2358c19d45b9b8297f393ef1256858d82f69c9b"},
- {file = "stevedore-1.32.0.tar.gz", hash = "sha256:18afaf1d623af5950cc0f7e75e70f917784c73b652a34a12d90b309451b5500b"},
-]
toml = [
{file = "toml-0.10.1-py2.py3-none-any.whl", hash = "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"},
{file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"},
]
tqdm = [
- {file = "tqdm-4.47.0-py2.py3-none-any.whl", hash = "sha256:7810e627bcf9d983a99d9ff8a0c09674400fd2927eddabeadf153c14a2ec8656"},
- {file = "tqdm-4.47.0.tar.gz", hash = "sha256:63ef7a6d3eb39f80d6b36e4867566b3d8e5f1fe3d6cb50c5e9ede2b3198ba7b7"},
+ {file = "tqdm-4.48.2-py2.py3-none-any.whl", hash = "sha256:1a336d2b829be50e46b84668691e0a2719f26c97c62846298dd5ae2937e4d5cf"},
+ {file = "tqdm-4.48.2.tar.gz", hash = "sha256:564d632ea2b9cb52979f7956e093e831c28d441c11751682f84c86fc46e4fd21"},
]
twine = [
{file = "twine-1.15.0-py2.py3-none-any.whl", hash = "sha256:630fadd6e342e725930be6c696537e3f9ccc54331742b16245dab292a17d0460"},
{file = "twine-1.15.0.tar.gz", hash = "sha256:a3d22aab467b4682a22de4a422632e79d07eebd07ff2a7079effb13f8a693787"},
+ {file = "twine-3.2.0-py3-none-any.whl", hash = "sha256:ba9ff477b8d6de0c89dd450e70b2185da190514e91c42cc62f96850025c10472"},
+ {file = "twine-3.2.0.tar.gz", hash = "sha256:34352fd52ec3b9d29837e6072d5a2a7c6fe4290e97bba46bb8d478b5c598f7ab"},
]
typed-ast = [
{file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"},
@@ -1454,13 +1775,12 @@ typed-ast = [
{file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"},
]
typing = [
- {file = "typing-3.7.4.1-py2-none-any.whl", hash = "sha256:c8cabb5ab8945cd2f54917be357d134db9cc1eb039e59d1606dc1e60cb1d9d36"},
- {file = "typing-3.7.4.1-py3-none-any.whl", hash = "sha256:f38d83c5a7a7086543a0f649564d661859c5146a85775ab90c0d2f93ffaa9714"},
- {file = "typing-3.7.4.1.tar.gz", hash = "sha256:91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23"},
+ {file = "typing-3.7.4.3-py2-none-any.whl", hash = "sha256:283d868f5071ab9ad873e5e52268d611e851c870a2ba354193026f2dfb29d8b5"},
+ {file = "typing-3.7.4.3.tar.gz", hash = "sha256:1187fb9c82fd670d10aa07bbb6cfcfe4bdda42d6fab8d5134f04e8c4d0b71cc9"},
]
urllib3 = [
- {file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"},
- {file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"},
+ {file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"},
+ {file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"},
]
wcwidth = [
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
@@ -1473,4 +1793,6 @@ webencodings = [
zipp = [
{file = "zipp-1.2.0-py2.py3-none-any.whl", hash = "sha256:e0d9e63797e483a30d27e09fffd308c59a700d365ec34e93cc100844168bf921"},
{file = "zipp-1.2.0.tar.gz", hash = "sha256:c70410551488251b0fee67b460fb9a536af8d6f9f008ad10ac51f615b6a521b1"},
+ {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"},
+ {file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"},
]
diff --git a/pyproject.toml b/pyproject.toml
index e09f49d9c..766d34b3f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,36 +3,87 @@ skip-string-normalization = true
[tool.poetry]
name = "libtmux"
-version = "0.8.2"
+version = "0.8.3"
description = "scripting library / orm for tmux"
license = "MIT"
authors = ["Tony Narlock "]
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: POSIX",
+ "Operating System :: MacOS :: MacOS X",
+ "Environment :: Web Environment",
+ "Intended Audience :: Developers",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Topic :: Utilities",
+ "Topic :: System :: Shells"
+]
+
+keywords = ["tmux", "session manager", "terminal", "ncurses"]
+homepage = "http://github.com/tmux-python/libtmux/"
+readme = "README.rst"
+
+[tool.poetry.urls]
+"Bug Tracker" = "https://github.com/tmux-python/libtmux/issues"
+Documentation = "https://libtmux.git-pull.com"
+Repository = "https://github.com/tmux-python/libtmux"
[tool.poetry.dependencies]
python = "~2.7 || ^3.5"
[tool.poetry.dev-dependencies]
-alagitpull = "*"
-black = {version="==19.10b0", python="^3.6"}
-doc8 = "*"
-docutils = "*"
-flake8 = "*"
-isort = "*"
+### Docs ###
+sphinx = [
+ {version="<2", python="<3"},
+ {version="*", python=">=3"}
+]
+recommonmark = {version = "^0.6.0"}
+alagitpull = {version = "~0.1.0"}
+sphinx-issues = {version = "^1.2.0"}
+
+### Testing ###
pytest = [
{version="<4.7.0", python="<3"},
{version="*", python=">=3"}
]
pathlib2 = {version="<2.3.5", python="<3"} # Untangle pytest peer-dependency
pytest-rerunfailures = "*"
-sphinx = [
- {version="<2", python="<3"},
+pytest-mock = [
+ {version="<3.0.0", python="<3"},
{version="*", python=">=3"}
]
-sphinx-issues = "*"
-twine = "*"
+
+### Coverage ###
codecov = "*"
coverage = "*"
pytest-cov = [
{version="<2.10.0", python="<3"},
{version="*", python=">=3"}
]
+
+### Format ###
+black = {version="==19.10b0", python="^3.6"}
+isort = [
+ {version="<5", python="<3.6"},
+ {version="*", python=">=3.6"}
+]
+
+### Lint ###
+flake8 = "*"
+
+### Deploy ###
+twine = "*"
+
+[tool.poetry.extras]
+docs = ["sphinx", "recommonmark", "sphinx-issues", "alagitpull"]
+test = ["pytest", "pathlib2", "pytest-rerunfailures", "pytest-mock"]
+coverage = ["codecov", "coverage", "pytest-cov"]
+format = ["black", "isort"]
+lint = ["flake8"]
+deploy = ["twine"]
diff --git a/requirements/doc.txt b/requirements/doc.txt
index daa779154..8d3b35521 100644
--- a/requirements/doc.txt
+++ b/requirements/doc.txt
@@ -1,4 +1,4 @@
docutils==0.14
sphinx>=2.0.0
sphinx_issues==1.2.0
-alagitpull>=0.0.22
+alagitpull>=0.1.0
diff --git a/setup.cfg b/setup.cfg
index c4abbb3cc..b8dc83ce8 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -47,7 +47,5 @@ include_trailing_comma = true
multi_line_output = 3
known_pytest = pytest,py
known_first_party = libtmux
-split_before_closing_bracket = true
sections = FUTURE,STDLIB,PYTEST,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
line_length = 88
-not_skip = __init__.py
diff --git a/setup.py b/setup.py
index 0bd9633f3..6cf49fbf0 100644
--- a/setup.py
+++ b/setup.py
@@ -46,18 +46,18 @@
zip_safe=False,
keywords=about['__title__'],
classifiers=[
- 'Development Status :: 5 - Production/Stable',
+ "Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: MIT License",
"Operating System :: POSIX",
"Operating System :: MacOS :: MacOS X",
- 'Environment :: Web Environment',
- 'Intended Audience :: Developers',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 2.7',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: Implementation :: PyPy',
+ "Environment :: Web Environment",
+ "Intended Audience :: Developers",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Utilities",
"Topic :: System :: Shells",
],