proxy.py/tox.ini

272 lines
6.9 KiB
INI
Raw Normal View History

2019-12-01 20:57:21 +00:00
[tox]
envlist = py36,py37,py38,py39,py310
isolated_build = true
minversion = 3.21.0
2019-12-01 20:57:21 +00:00
[testenv]
deps =
-rrequirements.txt
-rrequirements-testing.txt
-rrequirements-tunnel.txt
# NOTE: The command is invoked by the script name and not via
# NOTE: `{envpython} -m pytest` because it'd add CWD into $PYTHONPATH
# NOTE: testing the project from the Git checkout
# NOTE: rather than one installed.
2021-11-05 21:09:33 +00:00
commands = pytest {posargs:}
[dists]
setenv =
PEP517_OUT_DIR = {env:PEP517_OUT_DIR:{toxinidir}{/}dist}
2021-11-16 23:34:29 +00:00
[testenv:build-docs]
allowlist_externals =
git
basepython = python3
commands_pre =
# Paramiko:
{envpython} -m pip install -r{toxinidir}/requirements-tunnel.txt
commands =
# Retrieve possibly missing commits:
-git fetch --unshallow
-git fetch --tags
# Build the html docs with Sphinx:
{envpython} -m sphinx \
-j auto \
-b html \
{tty:--color} \
-a \
-n \
-W --keep-going \
-d "{temp_dir}/.doctrees" \
. \
"{envdir}/docs_out"
# Print out the output docs dir and a way to serve html:
-{envpython} -c\
'import pathlib;\
docs_dir = pathlib.Path(r"{envdir}") / "docs_out";\
index_file = docs_dir / "index.html";\
print("\n" + "=" * 120 +\
f"\n\nDocumentation available under:\n\n\
\tfile://\{index_file\}\n\nTo serve docs, use\n\n\
\t$ python3 -m http.server --directory \
\N\{QUOTATION MARK\}\{docs_dir\}\N\{QUOTATION MARK\} 0\n\n" +\
"=" * 120)'
changedir = {toxinidir}/docs
deps =
-r{toxinidir}/docs/requirements.txt
# FIXME: re-enable the "-r" + "-c" paradigm once the pip bug is fixed.
# Ref: https://github.com/pypa/pip/issues/9243
# -r{toxinidir}/docs/requirements.in
# -c{toxinidir}/docs/requirements.txt
description = Build The Docs
isolated_build = true
passenv =
SSH_AUTH_SOCK
skip_install = false
usedevelop = false
[testenv:doctest-docs]
allowlist_externals =
{[testenv:build-docs]allowlist_externals}
basepython = {[testenv:build-docs]basepython}
commands_pre = {[testenv:build-docs]commands_pre}
commands =
# Retrieve possibly missing commits:
-git fetch --unshallow
-git fetch --tags
# Spellcheck docs site:
python -m sphinx \
-j auto \
-a -n -W \
--keep-going \
-b doctest --color \
-d "{toxworkdir}/docs_doctree" \
. "{toxworkdir}/docs_out"
changedir = {[testenv:build-docs]changedir}
deps = {[testenv:build-docs]deps}
description = Doctest The Docs
isolated_build = {[testenv:build-docs]isolated_build}
passenv = {[testenv:build-docs]passenv}
skip_install = {[testenv:build-docs]skip_install}
usedevelop = {[testenv:build-docs]usedevelop}
[testenv:linkcheck-docs]
allowlist_externals =
{[testenv:build-docs]allowlist_externals}
basepython = {[testenv:build-docs]basepython}
commands_pre = {[testenv:build-docs]commands_pre}
commands =
# Retrieve possibly missing commits:
-git fetch --unshallow
-git fetch --tags
# Spellcheck docs site:
python -m sphinx \
-j auto \
-a -n -W \
--keep-going \
-b linkcheck --color \
-d "{toxworkdir}/docs_doctree" \
. "{toxworkdir}/docs_out"
changedir = {[testenv:build-docs]changedir}
deps = {[testenv:build-docs]deps}
description = Linkcheck The Docs
isolated_build = {[testenv:build-docs]isolated_build}
passenv = {[testenv:build-docs]passenv}
skip_install = {[testenv:build-docs]skip_install}
usedevelop = {[testenv:build-docs]usedevelop}
[testenv:spellcheck-docs]
allowlist_externals =
{[testenv:build-docs]allowlist_externals}
basepython = {[testenv:build-docs]basepython}
commands_pre = {[testenv:build-docs]commands_pre}
commands =
# Retrieve possibly missing commits:
-git fetch --unshallow
-git fetch --tags
# Spellcheck docs site:
python -m sphinx \
-j auto \
-a -n -W \
--keep-going \
-b spelling --color \
-d "{toxworkdir}/docs_doctree" \
. "{toxworkdir}/docs_out"
changedir = {[testenv:build-docs]changedir}
deps =
sphinxcontrib-spelling >= 7.2.0
-r{toxinidir}/docs/requirements.in
description = Spellcheck The Docs
isolated_build = {[testenv:build-docs]isolated_build}
passenv = {[testenv:build-docs]passenv}
skip_install = {[testenv:build-docs]skip_install}
usedevelop = {[testenv:build-docs]usedevelop}
[testenv:make-changelog]
basepython = python3
depends =
check-changelog
description =
Generate a changelog from fragments using Towncrier. Getting an
unreleased changelog preview does not require extra arguments.
When invoking to update the changelog, pass the desired version as an
argument after `--`. For example, `tox -e {envname} -- 1.3.2`.
commands =
{envpython} -m \
towncrier.build \
--version \
{posargs:'[UNRELEASED DRAFT]' --draft}
deps =
towncrier == 21.3.0
isolated_build = true
skip_install = true
[testenv:check-changelog]
basepython = {[testenv:make-changelog]basepython}
description =
Check Towncrier change notes
commands =
{envpython} -m \
towncrier.check \
--compare-with origin/main \
{posargs:}
deps =
{[testenv:make-changelog]deps}
isolated_build = {[testenv:make-changelog]isolated_build}
skip_install = {[testenv:make-changelog]skip_install}
[testenv:cleanup-dists]
description =
Wipe the the `{env:PEP517_OUT_DIR}{/}` folder
usedevelop = false
skip_install = true
deps =
setenv =
{[dists]setenv}
commands =
{envpython} -c \
'import os, shutil, sys; dists_dir = os.getenv("PEP517_OUT_DIR"); shutil.rmtree(dists_dir, ignore_errors=True); sys.exit(os.path.exists(dists_dir))'
[testenv:build-dists]
description =
Build non-universal dists and put them into
the `{env:PEP517_OUT_DIR}{/}` folder
depends =
cleanup-dists
isolated_build = true
# `usedevelop = true` overrides `skip_install` instruction, it's unwanted
usedevelop = false
skip_install = true
deps =
build >= 0.7.0, < 0.8.0
passenv =
PEP517_BUILD_ARGS
setenv =
{[dists]setenv}
commands =
{envpython} -m build \
--outdir '{env:PEP517_OUT_DIR}{/}' \
{posargs:{env:PEP517_BUILD_ARGS:}} \
'{toxinidir}'
[testenv:metadata-validation]
description =
Verify that dists under the `{env:PEP517_OUT_DIR}{/}` dir
have valid metadata
depends =
build-dists
deps =
twine
usedevelop = false
skip_install = true
setenv =
{[dists]setenv}
commands =
{envpython} -m twine check \
--strict \
{env:PEP517_OUT_DIR}{/}*
[testenv:lint]
description =
Enforce quality standards under `{basepython}` ({envpython})
commands =
{envpython} -m \
pre_commit run \
--show-diff-on-failure \
--hook-stage manual \
{posargs:--all-files -v}
# Print out the advice on how to install pre-commit from this env into Git:
-{envpython} -c \
'cmd = "{envpython} -m pre_commit install"; \
scr_width = len(cmd) + 10; \
sep = "=" * scr_width; \
cmd_str = " $ \{cmd\}";' \
'print(f"\n\{sep\}\nTo install pre-commit hooks into the Git repo, run:\n\n\{cmd_str\}\n\n\{sep\}\n")'
deps =
pre-commit
pylint >= 2.5.3
pylint-pytest < 1.1.0
Async `get_events`, `handle_event`, `handle_readables`, `handle_writables` (#769) * Asynchronous `handle_event` and `LocalExecutor` thread * Bail out on first task completion * mypy * Add `helper/benchmark.sh` and fix threaded which must now use asyncio (reduced performance of threaded) * Print open file diff from `benchmark.sh` * Add `--local-executor` flag, disabled by default for now until tests are updated * Async `handle_readables` and `handle_writables` for `HttpProtocolHandlerPlugin` interface (doesnt impact proxy/web plugins for now) * Async `get_events` * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Address tests after async changes * mypy and flake8 * spelldoc * `check.py` and trailing comma * Rename to `_assertions.py` * Add missing `pytest-mock` and `pytest-asyncio` deps * Add `pytest-mock` to `pylint` deps * Correct use of `parameterize` and add `PT007` to flake8 ignores * Fix mypy hints broken for `< Python3.9` * Remove usage of `asynccontextmanager` which is not available for all Python versions that `proxy.py` supports * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix for pre-python-3.9 versions * `AsyncTask` apis `set_name` and `get_name` are not available on all supported versions * Install setuptools via `lib-dep` until we recommend editable install * Deprecate support for `Python 3.6` * Use recommendation suggested here https://github.com/abhinavsingh/proxy.py/pull/769\#discussion_r753840929 * Address recommendation here https://github.com/abhinavsingh/proxy.py/pull/769\#discussion_r753841906 * Make `Threadless` agnostic of `multiprocessing.Process` * Acceptors must dispatch to local executor in non-blocking fashion * No daemon for executor processes and fix shutdown logic * Only return fds from `_selected_events` not all events data * Refactor logic * Prefix private methods with `_` * `work_queue` and not `client_queue` * Turn `Threadless` into an abstract executor. Introduce `RemoteExecutor` * Make `LocalExecutor` agnostic of `threading.Thread` * `LocalExecutor` now implements `Threadless` * `get_events` and `get_descriptors` now must return int and not sock. `Threadless` now avoids repeated register/unregister and instead make use of `selectors.modify` * Fix `main` tests * Apply suggestions from code review Co-authored-by: Sviatoslav Sydorenko <wk@sydorenko.org.ua> * Apply code review recommendations manually * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Revert back `Any` and use `addr or None` * Address `flake8` * Update tests to use `fileno` * Fix doc build * Fix doc spell, use tear down and not teardown * Doc updates * Add back support for `Python 3.6` * Acceptors dont need loop initialization * On Python 3.6 `asyncio.new_event_loop()` is necessary * Make doc happy * `--threaded` needs a new event loop for 3.7 too * Always use `asyncio.new_event_loop()` for threaded mode Added e2e integration tests (subprocess & curl) for all modes. * Lint fixes Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sviatoslav Sydorenko <wk@sydorenko.org.ua>
2021-11-23 09:32:00 +00:00
pytest-mock >= 3.6.1
2021-11-16 23:34:29 +00:00
-r docs/requirements.in
-r requirements-tunnel.txt
-r benchmark/requirements.txt
isolated_build = true
skip_install = true