diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4692ade..7047294 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,29 +7,34 @@ on: workflow_dispatch: jobs: - unittest: + unittest: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', 'pypy-3.7'] + python-version: ['3.7', '3.8', '3.9', 'pypy-3.7', 'pyston'] steps: - uses: actions/checkout@v1 - - name: Set up Python ${{ matrix.python-version }} + - name: Set up Python + if: ${{ matrix.python-version != 'pyston' }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} architecture: x64 + - name: Set up Pyston + if: ${{ matrix.python-version == 'pyston' }} + run: | + git clone https://github.com/pyenv/pyenv.git ~/.pyenv + ~/.pyenv/bin/pyenv install pyston-2.2 + echo "$HOME/.pyenv/versions/pyston-2.2/bin" >> $GITHUB_PATH - uses: actions/cache@v2 - env: - cache-name: unittest with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: unittest-cache-${{ matrix.python-version }} - name: Apt install run: sudo apt install shellcheck - name: Pip install run: pip install -U codecov tox tox-gh-actions - - name: Build and install uvloop + - name: Build and install libuv run: | git clone https://github.com/libuv/libuv.git pushd libuv @@ -39,8 +44,8 @@ jobs: make sudo make install popd - - name: unittest ${{ matrix.python-version }} - run: tox + - name: Run tests + run: tox -vv - name: Generate coverage report run: tox -e coverage-report - name: Upload coverage @@ -49,7 +54,7 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.xml - name: blackhole + name: blackhole flags: unittests env_vars: PYTHON fail_ci_if_error: true @@ -64,11 +69,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: lint with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: lint-cache - name: Pip install run: pip install tox - name: Lint @@ -84,11 +87,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: docs with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: docs-cache - name: Pip install run: pip install tox - name: Docs @@ -110,11 +111,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: build with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: build-cache - name: Pip install run: pip install tox - name: Build @@ -130,11 +129,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: man with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: man-cache - name: Pip install run: pip install tox - name: Man @@ -150,11 +147,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: poetry with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: poetry-cache - name: Pip install run: pip install tox - name: Poetry @@ -170,11 +165,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: setuppy with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: setuppy-cache - name: Pip install run: pip install tox - name: setup.py @@ -190,11 +183,9 @@ jobs: python-version: '3.9' architecture: x64 - uses: actions/cache@v2 - env: - cache-name: shellcheck with: path: ~/.cache/pip - key: ${{ env.cache-name }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements-dev.txt') }} + key: shellcheck-cache - name: Install shellcheck run: sudo apt install shellcheck - name: Pip install diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 43cfa01..0218074 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,24 +1,26 @@ fail_fast: true +exclude: ^(\.tox/|\.coverage|poetry\.lock) repos: - repo: https://github.com/psf/black - rev: stable + rev: 21.6b0 hooks: - id: black - repo: https://gitlab.com/pycqa/flake8 - rev: 3.7.8 + rev: 3.9.2 hooks: - id: flake8 + additional_dependencies: [flake8-bugbear, flake8-isort, flake8-commas] - repo: https://github.com/timothycrosley/isort - rev: 4.3.21-2 + rev: 5.9.2 hooks: - id: isort additional_dependencies: [toml] exclude: ^.*/tests/.*\.py$ - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.3.0 + rev: v4.0.1 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -28,3 +30,6 @@ repos: - id: check-symlinks - id: debug-statements - id: fix-encoding-pragma + - id: check-toml + - id: check-yaml + - id: destroyed-symlinks diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4839870..e0efa00 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -25,17 +25,24 @@ the functionality yourself. Current release --------------- -.. _2.1.17: +.. _2.1.18: -2.1.17 +2.1.18 ====== -- Release to update PyPI pages to remove references to Travis CI. +- Blackhole now officially supports Pyston 2.2 and above. ------------- Past releases ------------- +.. _2.1.17: + +2.1.17 +====== + +- Release to update PyPI pages to remove references to Travis CI. + .. _2.1.16: 2.1.16 diff --git a/Makefile b/Makefile index a3ec5d3..c7efaf6 100644 --- a/Makefile +++ b/Makefile @@ -51,22 +51,27 @@ shellcheck: .PHONY: test test: - tox -e py38 + tox -vv -e py38 .PHONY: test_py37 test_py37: - tox -e py37,py37-setproctitle,py37-uvloop + tox -vv -e py37,py37-setproctitle,py37-uvloop .PHONY: test_py38 test_py38: - tox -e py38,py38-setproctitle,py38-uvloop + tox -vv -e py38,py38-setproctitle,py38-uvloop .PHONY: test_py39 test_py39: - tox -e py39,py39-setproctitle,py39-uvloop + tox -vv -e py39,py39-setproctitle,py39-uvloop .PHONY: test_pypy3 - tox -e pypy3,pypy3-setproctitle +test_pypy: + tox -vv -e pypy3,pypy3-setproctitle,py39-uvloop + +.PHONY: test_pyston-3 +test_pyston-3: + tox -vv -e pyston-3,pyston-3-setproctitle,pyston-3-uvloop .PHONY: test_build test_build: diff --git a/blackhole/__init__.py b/blackhole/__init__.py index b0a606f..b62c2cf 100644 --- a/blackhole/__init__.py +++ b/blackhole/__init__.py @@ -52,7 +52,7 @@ __copyright__ = "None" __credits__ = ("Kura",) __license__ = "MIT" -__version__ = "2.1.17" +__version__ = "2.1.18" __maintainer__ = "Kura" __email__ = "kura@kura.gg" __status__ = "Stable" diff --git a/blackhole/streams.py b/blackhole/streams.py index 26f5dc4..6b1d290 100644 --- a/blackhole/streams.py +++ b/blackhole/streams.py @@ -38,7 +38,7 @@ class StreamProtocol(asyncio.streams.FlowControlMixin, asyncio.Protocol): """Helper class to adapt between Protocol and StreamReader.""" - def __init__(self, *, loop=None, disconnect_error=RuntimeError, **kwargs): + def __init__(self, *, loop=None, **kwargs): """Stream protocol.""" super().__init__(loop=loop) self.transport = None diff --git a/docs/source/overview.rst b/docs/source/overview.rst index eb383e0..51f9c37 100644 --- a/docs/source/overview.rst +++ b/docs/source/overview.rst @@ -31,7 +31,7 @@ Overview Requirements ============ -- Python 3.7+ or PyPy 3.7+ +- Python 3.7+, PyPy 3.7+, or Pyston 2.2+ .. _installation: diff --git a/poetry.lock b/poetry.lock index f59ac5e..e7d5a90 100644 --- a/poetry.lock +++ b/poetry.lock @@ -73,7 +73,6 @@ python-versions = ">=3.6" [package.dependencies] appdirs = "*" click = ">=7.1.2" -dataclasses = {version = ">=0.6", markers = "python_version < \"3.7\""} mypy-extensions = ">=0.4.3" pathspec = ">=0.6,<1" regex = ">=2020.1.8" @@ -152,14 +151,6 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] toml = ["toml"] -[[package]] -name = "dataclasses" -version = "0.8" -description = "A backport of the dataclasses module for Python 3.6" -category = "main" -optional = true -python-versions = ">=3.6, <3.7" - [[package]] name = "distlib" version = "0.3.2" @@ -319,7 +310,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.6.0" +version = "4.6.1" description = "Read metadata from Python packages" category = "main" optional = true @@ -334,21 +325,6 @@ docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] perf = ["ipython"] testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] -[[package]] -name = "importlib-resources" -version = "5.2.0" -description = "Read resources from Python packages" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy"] - [[package]] name = "interrogate" version = "1.4.0" @@ -492,7 +468,6 @@ python-versions = ">=3.6.1" cfgv = ">=2.0.0" identify = ">=1.0.0" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -importlib-resources = {version = "*", markers = "python_version < \"3.7\""} nodeenv = ">=0.11.1" pyyaml = ">=5.1" toml = "*" @@ -644,7 +619,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [[package]] name = "regex" -version = "2021.7.1" +version = "2021.7.6" description = "Alternative regular expression module, to replace re." category = "main" optional = true @@ -941,13 +916,23 @@ appdirs = ">=1.4.3,<2" distlib = ">=0.3.1,<1" filelock = ">=3.0.0,<4" importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -importlib-resources = {version = ">=1.0", markers = "python_version < \"3.7\""} six = ">=1.9.0,<2" [package.extras] docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)"] testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)", "xonsh (>=0.9.16)"] +[[package]] +name = "vulture" +version = "2.3" +description = "Find dead code" +category = "main" +optional = true +python-versions = ">=3.6" + +[package.dependencies] +toml = "*" + [[package]] name = "wcwidth" version = "0.2.5" @@ -969,16 +954,16 @@ docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [extras] -dev = ["uvloop", "setproctitle", "sphinx", "guzzle_sphinx_theme", "black", "coverage", "pytest", "pytest-asyncio", "pytest-clarity", "pytest-cov", "flake8", "flake8-bugbear", "flake8-isort", "flake8-commas", "pydocstyle", "doc8", "interrogate", "pyroma", "bandit", "tox", "pre-commit", "codespell"] +dev = ["uvloop", "setproctitle", "sphinx", "guzzle_sphinx_theme", "black", "coverage", "pytest", "pytest-asyncio", "pytest-clarity", "pytest-cov", "flake8", "flake8-bugbear", "flake8-isort", "flake8-commas", "pydocstyle", "doc8", "interrogate", "pyroma", "bandit", "tox", "pre-commit", "codespell", "vulture"] docs = ["sphinx", "guzzle_sphinx_theme"] setproctitle = ["setproctitle"] -tests = ["black", "coverage", "pytest", "pytest-asyncio", "pytest-clarity", "pytest-cov", "flake8", "flake8-bugbear", "flake8-isort", "flake8-commas", "interrogate", "pyroma", "bandit", "pydocstyle", "doc8", "codespell"] +tests = ["black", "coverage", "pytest", "pytest-asyncio", "pytest-clarity", "pytest-cov", "flake8", "flake8-bugbear", "flake8-isort", "flake8-commas", "interrogate", "pyroma", "bandit", "pydocstyle", "doc8", "codespell", "vulture"] uvloop = ["uvloop"] [metadata] lock-version = "1.1" -python-versions = ">3.6.1, <4" -content-hash = "2f1fc0368334c6cab854e57e2fc9a6147281e4a06b76d19c95e0d513c3ec7f9d" +python-versions = ">3.7, <4" +content-hash = "82449f07f4f8532c9921b59ce0447f8a181ab499f15e70684f9c463d83e8ac84" [metadata.files] alabaster = [ @@ -1087,10 +1072,6 @@ coverage = [ {file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"}, {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"}, ] -dataclasses = [ - {file = "dataclasses-0.8-py3-none-any.whl", hash = "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf"}, - {file = "dataclasses-0.8.tar.gz", hash = "sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97"}, -] distlib = [ {file = "distlib-0.3.2-py2.py3-none-any.whl", hash = "sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c"}, {file = "distlib-0.3.2.zip", hash = "sha256:106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736"}, @@ -1147,12 +1128,8 @@ imagesize = [ {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.6.0-py3-none-any.whl", hash = "sha256:c6513572926a96458f8c8f725bf0e00108fba0c9583ade9bd15b869c9d726e33"}, - {file = "importlib_metadata-4.6.0.tar.gz", hash = "sha256:4a5611fea3768d3d967c447ab4e93f567d95db92225b43b7b238dbfb855d70bb"}, -] -importlib-resources = [ - {file = "importlib_resources-5.2.0-py3-none-any.whl", hash = "sha256:a0143290bef3cbc99de9e40176e4987780939a955b8632f02ce6c935f42e9bfc"}, - {file = "importlib_resources-5.2.0.tar.gz", hash = "sha256:22a2c42d8c6a1d30aa8a0e1f57293725bfd5c013d562585e46aff469e0ff78b3"}, + {file = "importlib_metadata-4.6.1-py3-none-any.whl", hash = "sha256:9f55f560e116f8643ecf2922d9cd3e1c7e8d52e683178fecd9d08f6aa357e11e"}, + {file = "importlib_metadata-4.6.1.tar.gz", hash = "sha256:079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac"}, ] interrogate = [ {file = "interrogate-1.4.0-py3-none-any.whl", hash = "sha256:306d44c8557352a64ded253ddec6bc5d2dc05a7b9bb68ca950be4357b399195e"}, @@ -1316,43 +1293,47 @@ pyyaml = [ {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, ] regex = [ - {file = "regex-2021.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:494d0172774dc0beeea984b94c95389143db029575f7ca908edd74469321ea99"}, - {file = "regex-2021.7.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:8cf6728f89b071bd3ab37cb8a0e306f4de897553a0ed07442015ee65fbf53d62"}, - {file = "regex-2021.7.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1806370b2bef4d4193eebe8ee59a9fd7547836a34917b7badbe6561a8594d9cb"}, - {file = "regex-2021.7.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d0cf2651a8804f6325747c7e55e3be0f90ee2848e25d6b817aa2728d263f9abb"}, - {file = "regex-2021.7.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:268fe9dd1deb4a30c8593cabd63f7a241dfdc5bd9dd0233906c718db22cdd49a"}, - {file = "regex-2021.7.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:7743798dfb573d006f1143d745bf17efad39775a5190b347da5d83079646be56"}, - {file = "regex-2021.7.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:0e46c1191b2eb293a6912269ed08b4512e7e241bbf591f97e527492e04c77e93"}, - {file = "regex-2021.7.1-cp36-cp36m-win32.whl", hash = "sha256:b1dbeef938281f240347d50f28ae53c4b046a23389cd1fc4acec5ea0eae646a1"}, - {file = "regex-2021.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6c72ebb72e64e9bd195cb35a9b9bbfb955fd953b295255b8ae3e4ad4a146b615"}, - {file = "regex-2021.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf819c5b77ff44accc9a24e31f1f7ceaaf6c960816913ed3ef8443b9d20d81b6"}, - {file = "regex-2021.7.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e80d2851109e56420b71f9702ad1646e2f0364528adbf6af85527bc61e49f394"}, - {file = "regex-2021.7.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a1b6a3f600d6aff97e3f28c34192c9ed93fee293bd96ef327b64adb51a74b2f6"}, - {file = "regex-2021.7.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:ed77b97896312bc2deafe137ca2626e8b63808f5bedb944f73665c68093688a7"}, - {file = "regex-2021.7.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a548bb51c4476332ce4139df8e637386730f79a92652a907d12c696b6252b64d"}, - {file = "regex-2021.7.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:210c359e6ee5b83f7d8c529ba3c75ba405481d50f35a420609b0db827e2e3bb5"}, - {file = "regex-2021.7.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:1d386402ae7f3c9b107ae5863f7ecccb0167762c82a687ae6526b040feaa5ac6"}, - {file = "regex-2021.7.1-cp37-cp37m-win32.whl", hash = "sha256:5049d00dbb78f9d166d1c704e93934d42cce0570842bb1a61695123d6b01de09"}, - {file = "regex-2021.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:361be4d311ac995a8c7ad577025a3ae3a538531b1f2cf32efd8b7e5d33a13e5a"}, - {file = "regex-2021.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f32f47fb22c988c0b35756024b61d156e5c4011cb8004aa53d93b03323c45657"}, - {file = "regex-2021.7.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b024ee43ee6b310fad5acaee23e6485b21468718cb792a9d1693eecacc3f0b7e"}, - {file = "regex-2021.7.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:b092754c06852e8a8b022004aff56c24b06310189186805800d09313c37ce1f8"}, - {file = "regex-2021.7.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:a8a5826d8a1b64e2ff9af488cc179e1a4d0f144d11ce486a9f34ea38ccedf4ef"}, - {file = "regex-2021.7.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:444723ebaeb7fa8125f29c01a31101a3854ac3de293e317944022ae5effa53a4"}, - {file = "regex-2021.7.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:fdad3122b69cdabdb3da4c2a4107875913ac78dab0117fc73f988ad589c66b66"}, - {file = "regex-2021.7.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:4b1999ef60c45357598935c12508abf56edbbb9c380df6f336de38a6c3a294ae"}, - {file = "regex-2021.7.1-cp38-cp38-win32.whl", hash = "sha256:e07e92935040c67f49571779d115ecb3e727016d42fb36ee0d8757db4ca12ee0"}, - {file = "regex-2021.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:6b8b629f93246e507287ee07e26744beaffb4c56ed520576deac8b615bd76012"}, - {file = "regex-2021.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56bef6b414949e2c9acf96cb5d78de8b529c7b99752619494e78dc76f99fd005"}, - {file = "regex-2021.7.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:78a2a885345a2d60b5e68099e877757d5ed12e46ba1e87507175f14f80892af3"}, - {file = "regex-2021.7.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3f7a92e60930f8fca2623d9e326c173b7cf2c8b7e4fdcf984b75a1d2fb08114d"}, - {file = "regex-2021.7.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4fc86b729ab88fe8ac3ec92287df253c64aa71560d76da5acd8a2e245839c629"}, - {file = "regex-2021.7.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:59845101de68fd5d3a1145df9ea022e85ecd1b49300ea68307ad4302320f6f61"}, - {file = "regex-2021.7.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:ce269e903b00d1ab4746793e9c50a57eec5d5388681abef074d7b9a65748fca5"}, - {file = "regex-2021.7.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:c11f2fca544b5e30a0e813023196a63b1cb9869106ef9a26e9dae28bce3e4e26"}, - {file = "regex-2021.7.1-cp39-cp39-win32.whl", hash = "sha256:1ccbd41dbee3a31e18938096510b7d4ee53aa9fce2ee3dcc8ec82ae264f6acfd"}, - {file = "regex-2021.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:18040755606b0c21281493ec309214bd61e41a170509e5014f41d6a5a586e161"}, - {file = "regex-2021.7.1.tar.gz", hash = "sha256:849802379a660206277675aa5a5c327f5c910c690649535863ddf329b0ba8c87"}, + {file = "regex-2021.7.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e6a1e5ca97d411a461041d057348e578dc344ecd2add3555aedba3b408c9f874"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:6afe6a627888c9a6cfbb603d1d017ce204cebd589d66e0703309b8048c3b0854"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ccb3d2190476d00414aab36cca453e4596e8f70a206e2aa8db3d495a109153d2"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:ed693137a9187052fc46eedfafdcb74e09917166362af4cc4fddc3b31560e93d"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:99d8ab206a5270c1002bfcf25c51bf329ca951e5a169f3b43214fdda1f0b5f0d"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:b85ac458354165405c8a84725de7bbd07b00d9f72c31a60ffbf96bb38d3e25fa"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:3f5716923d3d0bfb27048242a6e0f14eecdb2e2a7fac47eda1d055288595f222"}, + {file = "regex-2021.7.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5983c19d0beb6af88cb4d47afb92d96751fb3fa1784d8785b1cdf14c6519407"}, + {file = "regex-2021.7.6-cp36-cp36m-win32.whl", hash = "sha256:c92831dac113a6e0ab28bc98f33781383fe294df1a2c3dfd1e850114da35fd5b"}, + {file = "regex-2021.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:791aa1b300e5b6e5d597c37c346fb4d66422178566bbb426dd87eaae475053fb"}, + {file = "regex-2021.7.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:59506c6e8bd9306cd8a41511e32d16d5d1194110b8cfe5a11d102d8b63cf945d"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:564a4c8a29435d1f2256ba247a0315325ea63335508ad8ed938a4f14c4116a5d"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:59c00bb8dd8775473cbfb967925ad2c3ecc8886b3b2d0c90a8e2707e06c743f0"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:9a854b916806c7e3b40e6616ac9e85d3cdb7649d9e6590653deb5b341a736cec"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:db2b7df831c3187a37f3bb80ec095f249fa276dbe09abd3d35297fc250385694"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:173bc44ff95bc1e96398c38f3629d86fa72e539c79900283afa895694229fe6a"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:15dddb19823f5147e7517bb12635b3c82e6f2a3a6b696cc3e321522e8b9308ad"}, + {file = "regex-2021.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ddeabc7652024803666ea09f32dd1ed40a0579b6fbb2a213eba590683025895"}, + {file = "regex-2021.7.6-cp37-cp37m-win32.whl", hash = "sha256:f080248b3e029d052bf74a897b9d74cfb7643537fbde97fe8225a6467fb559b5"}, + {file = "regex-2021.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:d8bbce0c96462dbceaa7ac4a7dfbbee92745b801b24bce10a98d2f2b1ea9432f"}, + {file = "regex-2021.7.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:edd1a68f79b89b0c57339bce297ad5d5ffcc6ae7e1afdb10f1947706ed066c9c"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:422dec1e7cbb2efbbe50e3f1de36b82906def93ed48da12d1714cabcd993d7f0"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cbe23b323988a04c3e5b0c387fe3f8f363bf06c0680daf775875d979e376bd26"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:0eb2c6e0fcec5e0f1d3bcc1133556563222a2ffd2211945d7b1480c1b1a42a6f"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1c78780bf46d620ff4fff40728f98b8afd8b8e35c3efd638c7df67be2d5cddbf"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bc84fb254a875a9f66616ed4538542fb7965db6356f3df571d783f7c8d256edd"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:598c0a79b4b851b922f504f9f39a863d83ebdfff787261a5ed061c21e67dd761"}, + {file = "regex-2021.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875c355360d0f8d3d827e462b29ea7682bf52327d500a4f837e934e9e4656068"}, + {file = "regex-2021.7.6-cp38-cp38-win32.whl", hash = "sha256:e586f448df2bbc37dfadccdb7ccd125c62b4348cb90c10840d695592aa1b29e0"}, + {file = "regex-2021.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:2fe5e71e11a54e3355fa272137d521a40aace5d937d08b494bed4529964c19c4"}, + {file = "regex-2021.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6110bab7eab6566492618540c70edd4d2a18f40ca1d51d704f1d81c52d245026"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:4f64fc59fd5b10557f6cd0937e1597af022ad9b27d454e182485f1db3008f417"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:89e5528803566af4df368df2d6f503c84fbfb8249e6631c7b025fe23e6bd0cde"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2366fe0479ca0e9afa534174faa2beae87847d208d457d200183f28c74eaea59"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f9392a4555f3e4cb45310a65b403d86b589adc773898c25a39184b1ba4db8985"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:2bceeb491b38225b1fee4517107b8491ba54fba77cf22a12e996d96a3c55613d"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:f98dc35ab9a749276f1a4a38ab3e0e2ba1662ce710f6530f5b0a6656f1c32b58"}, + {file = "regex-2021.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:319eb2a8d0888fa6f1d9177705f341bc9455a2c8aca130016e52c7fe8d6c37a3"}, + {file = "regex-2021.7.6-cp39-cp39-win32.whl", hash = "sha256:eaf58b9e30e0e546cdc3ac06cf9165a1ca5b3de8221e9df679416ca667972035"}, + {file = "regex-2021.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:4c9c3155fe74269f61e27617529b7f09552fbb12e44b1189cebbdb24294e6e1c"}, + {file = "regex-2021.7.6.tar.gz", hash = "sha256:8394e266005f2d8c6f0bc6780001f7afa3ef81a7a2111fa35058ded6fce79e4d"}, ] requests = [ {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, @@ -1503,6 +1484,10 @@ virtualenv = [ {file = "virtualenv-20.4.7-py2.py3-none-any.whl", hash = "sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76"}, {file = "virtualenv-20.4.7.tar.gz", hash = "sha256:14fdf849f80dbb29a4eb6caa9875d476ee2a5cf76a5f5415fa2f1606010ab467"}, ] +vulture = [ + {file = "vulture-2.3-py2.py3-none-any.whl", hash = "sha256:f39de5e6f1df1f70c3b50da54f1c8d494159e9ca3d01a9b89eac929600591703"}, + {file = "vulture-2.3.tar.gz", hash = "sha256:03d5a62bcbe9ceb9a9b0575f42d71a2d414070229f2e6f95fa6e7c71aaaed967"}, +] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, diff --git a/pyproject.toml b/pyproject.toml index 519d364..2dfd083 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ target-version = ['py37', 'py38', 'py39'] [tool.poetry] name = "blackhole" -version = "2.1.17" +version = "2.1.18" description = "Blackhole is an MTA (message transfer agent) that (figuratively) pipes all mail to /dev/null." authors = ["Kura "] license ="MIT" @@ -91,6 +91,7 @@ flake8-commas = {version = "^2.0.0", optional = true} pydocstyle = {version = "^5.1.0", optional = true} doc8 = {version = "^0.8.1", optional = true} codespell = {version = "^2.1.0", optional = true} +vulture = {version = "^2.3", optional = true} [tool.poetry.extras] uvloop = ["uvloop"] @@ -115,7 +116,8 @@ tests = [ "bandit", "pydocstyle", "doc8", - "codespell" + "codespell", + "vulture" ] dev = [ "uvloop", @@ -139,7 +141,8 @@ dev = [ "bandit", "tox", "pre-commit", - "codespell" + "codespell", + "vulture" ] [tool.pytest] diff --git a/requirements-dev.txt b/requirements-dev.txt index ac91b10..adb0a1d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -90,9 +90,6 @@ coverage==5.5; (python_version >= "2.7" and python_full_version < "3.0.0") or (p --hash=sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079 \ --hash=sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4 \ --hash=sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c -dataclasses==0.8; python_version >= "3.6" and python_version < "3.7" \ - --hash=sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf \ - --hash=sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97 distlib==0.3.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" \ --hash=sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c \ --hash=sha256:106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736 @@ -134,12 +131,9 @@ idna==2.10; python_version >= "3.5" and python_full_version < "3.0.0" or python_ imagesize==1.2.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.5" \ --hash=sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1 \ --hash=sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1 -importlib-metadata==4.6.0; python_version < "3.8" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.5.0" and python_version < "3.8" and python_version >= "3.6") and python_full_version >= "3.6.1" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.4.0" and python_version >= "3.6" and python_version < "3.8") \ - --hash=sha256:c6513572926a96458f8c8f725bf0e00108fba0c9583ade9bd15b869c9d726e33 \ - --hash=sha256:4a5611fea3768d3d967c447ab4e93f567d95db92225b43b7b238dbfb855d70bb -importlib-resources==5.2.0; python_version < "3.7" and python_full_version >= "3.6.1" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.7" or python_full_version >= "3.5.0" and python_version < "3.7" and python_version >= "3.6") \ - --hash=sha256:a0143290bef3cbc99de9e40176e4987780939a955b8632f02ce6c935f42e9bfc \ - --hash=sha256:22a2c42d8c6a1d30aa8a0e1f57293725bfd5c013d562585e46aff469e0ff78b3 +importlib-metadata==4.6.1; python_version < "3.8" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.5.0" and python_version < "3.8" and python_version >= "3.6") and python_full_version >= "3.6.1" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.4.0" and python_version >= "3.6" and python_version < "3.8") \ + --hash=sha256:9f55f560e116f8643ecf2922d9cd3e1c7e8d52e683178fecd9d08f6aa357e11e \ + --hash=sha256:079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac interrogate==1.4.0; python_version >= "3.6" \ --hash=sha256:306d44c8557352a64ded253ddec6bc5d2dc05a7b9bb68ca950be4357b399195e \ --hash=sha256:5fdef4704ee9afff5e7ef5649fc85df4d927853836ef6572776c480307fe4927 @@ -275,44 +269,48 @@ pyyaml==5.4.1; python_full_version >= "3.6.1" and python_version >= "3.5" \ --hash=sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10 \ --hash=sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db \ --hash=sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e -regex==2021.7.1; python_version >= "3.6" \ - --hash=sha256:494d0172774dc0beeea984b94c95389143db029575f7ca908edd74469321ea99 \ - --hash=sha256:8cf6728f89b071bd3ab37cb8a0e306f4de897553a0ed07442015ee65fbf53d62 \ - --hash=sha256:1806370b2bef4d4193eebe8ee59a9fd7547836a34917b7badbe6561a8594d9cb \ - --hash=sha256:d0cf2651a8804f6325747c7e55e3be0f90ee2848e25d6b817aa2728d263f9abb \ - --hash=sha256:268fe9dd1deb4a30c8593cabd63f7a241dfdc5bd9dd0233906c718db22cdd49a \ - --hash=sha256:7743798dfb573d006f1143d745bf17efad39775a5190b347da5d83079646be56 \ - --hash=sha256:0e46c1191b2eb293a6912269ed08b4512e7e241bbf591f97e527492e04c77e93 \ - --hash=sha256:b1dbeef938281f240347d50f28ae53c4b046a23389cd1fc4acec5ea0eae646a1 \ - --hash=sha256:6c72ebb72e64e9bd195cb35a9b9bbfb955fd953b295255b8ae3e4ad4a146b615 \ - --hash=sha256:bf819c5b77ff44accc9a24e31f1f7ceaaf6c960816913ed3ef8443b9d20d81b6 \ - --hash=sha256:e80d2851109e56420b71f9702ad1646e2f0364528adbf6af85527bc61e49f394 \ - --hash=sha256:a1b6a3f600d6aff97e3f28c34192c9ed93fee293bd96ef327b64adb51a74b2f6 \ - --hash=sha256:ed77b97896312bc2deafe137ca2626e8b63808f5bedb944f73665c68093688a7 \ - --hash=sha256:a548bb51c4476332ce4139df8e637386730f79a92652a907d12c696b6252b64d \ - --hash=sha256:210c359e6ee5b83f7d8c529ba3c75ba405481d50f35a420609b0db827e2e3bb5 \ - --hash=sha256:1d386402ae7f3c9b107ae5863f7ecccb0167762c82a687ae6526b040feaa5ac6 \ - --hash=sha256:5049d00dbb78f9d166d1c704e93934d42cce0570842bb1a61695123d6b01de09 \ - --hash=sha256:361be4d311ac995a8c7ad577025a3ae3a538531b1f2cf32efd8b7e5d33a13e5a \ - --hash=sha256:f32f47fb22c988c0b35756024b61d156e5c4011cb8004aa53d93b03323c45657 \ - --hash=sha256:b024ee43ee6b310fad5acaee23e6485b21468718cb792a9d1693eecacc3f0b7e \ - --hash=sha256:b092754c06852e8a8b022004aff56c24b06310189186805800d09313c37ce1f8 \ - --hash=sha256:a8a5826d8a1b64e2ff9af488cc179e1a4d0f144d11ce486a9f34ea38ccedf4ef \ - --hash=sha256:444723ebaeb7fa8125f29c01a31101a3854ac3de293e317944022ae5effa53a4 \ - --hash=sha256:fdad3122b69cdabdb3da4c2a4107875913ac78dab0117fc73f988ad589c66b66 \ - --hash=sha256:4b1999ef60c45357598935c12508abf56edbbb9c380df6f336de38a6c3a294ae \ - --hash=sha256:e07e92935040c67f49571779d115ecb3e727016d42fb36ee0d8757db4ca12ee0 \ - --hash=sha256:6b8b629f93246e507287ee07e26744beaffb4c56ed520576deac8b615bd76012 \ - --hash=sha256:56bef6b414949e2c9acf96cb5d78de8b529c7b99752619494e78dc76f99fd005 \ - --hash=sha256:78a2a885345a2d60b5e68099e877757d5ed12e46ba1e87507175f14f80892af3 \ - --hash=sha256:3f7a92e60930f8fca2623d9e326c173b7cf2c8b7e4fdcf984b75a1d2fb08114d \ - --hash=sha256:4fc86b729ab88fe8ac3ec92287df253c64aa71560d76da5acd8a2e245839c629 \ - --hash=sha256:59845101de68fd5d3a1145df9ea022e85ecd1b49300ea68307ad4302320f6f61 \ - --hash=sha256:ce269e903b00d1ab4746793e9c50a57eec5d5388681abef074d7b9a65748fca5 \ - --hash=sha256:c11f2fca544b5e30a0e813023196a63b1cb9869106ef9a26e9dae28bce3e4e26 \ - --hash=sha256:1ccbd41dbee3a31e18938096510b7d4ee53aa9fce2ee3dcc8ec82ae264f6acfd \ - --hash=sha256:18040755606b0c21281493ec309214bd61e41a170509e5014f41d6a5a586e161 \ - --hash=sha256:849802379a660206277675aa5a5c327f5c910c690649535863ddf329b0ba8c87 +regex==2021.7.6; python_version >= "3.6" \ + --hash=sha256:e6a1e5ca97d411a461041d057348e578dc344ecd2add3555aedba3b408c9f874 \ + --hash=sha256:6afe6a627888c9a6cfbb603d1d017ce204cebd589d66e0703309b8048c3b0854 \ + --hash=sha256:ccb3d2190476d00414aab36cca453e4596e8f70a206e2aa8db3d495a109153d2 \ + --hash=sha256:ed693137a9187052fc46eedfafdcb74e09917166362af4cc4fddc3b31560e93d \ + --hash=sha256:99d8ab206a5270c1002bfcf25c51bf329ca951e5a169f3b43214fdda1f0b5f0d \ + --hash=sha256:b85ac458354165405c8a84725de7bbd07b00d9f72c31a60ffbf96bb38d3e25fa \ + --hash=sha256:3f5716923d3d0bfb27048242a6e0f14eecdb2e2a7fac47eda1d055288595f222 \ + --hash=sha256:e5983c19d0beb6af88cb4d47afb92d96751fb3fa1784d8785b1cdf14c6519407 \ + --hash=sha256:c92831dac113a6e0ab28bc98f33781383fe294df1a2c3dfd1e850114da35fd5b \ + --hash=sha256:791aa1b300e5b6e5d597c37c346fb4d66422178566bbb426dd87eaae475053fb \ + --hash=sha256:59506c6e8bd9306cd8a41511e32d16d5d1194110b8cfe5a11d102d8b63cf945d \ + --hash=sha256:564a4c8a29435d1f2256ba247a0315325ea63335508ad8ed938a4f14c4116a5d \ + --hash=sha256:59c00bb8dd8775473cbfb967925ad2c3ecc8886b3b2d0c90a8e2707e06c743f0 \ + --hash=sha256:9a854b916806c7e3b40e6616ac9e85d3cdb7649d9e6590653deb5b341a736cec \ + --hash=sha256:db2b7df831c3187a37f3bb80ec095f249fa276dbe09abd3d35297fc250385694 \ + --hash=sha256:173bc44ff95bc1e96398c38f3629d86fa72e539c79900283afa895694229fe6a \ + --hash=sha256:15dddb19823f5147e7517bb12635b3c82e6f2a3a6b696cc3e321522e8b9308ad \ + --hash=sha256:2ddeabc7652024803666ea09f32dd1ed40a0579b6fbb2a213eba590683025895 \ + --hash=sha256:f080248b3e029d052bf74a897b9d74cfb7643537fbde97fe8225a6467fb559b5 \ + --hash=sha256:d8bbce0c96462dbceaa7ac4a7dfbbee92745b801b24bce10a98d2f2b1ea9432f \ + --hash=sha256:edd1a68f79b89b0c57339bce297ad5d5ffcc6ae7e1afdb10f1947706ed066c9c \ + --hash=sha256:422dec1e7cbb2efbbe50e3f1de36b82906def93ed48da12d1714cabcd993d7f0 \ + --hash=sha256:cbe23b323988a04c3e5b0c387fe3f8f363bf06c0680daf775875d979e376bd26 \ + --hash=sha256:0eb2c6e0fcec5e0f1d3bcc1133556563222a2ffd2211945d7b1480c1b1a42a6f \ + --hash=sha256:1c78780bf46d620ff4fff40728f98b8afd8b8e35c3efd638c7df67be2d5cddbf \ + --hash=sha256:bc84fb254a875a9f66616ed4538542fb7965db6356f3df571d783f7c8d256edd \ + --hash=sha256:598c0a79b4b851b922f504f9f39a863d83ebdfff787261a5ed061c21e67dd761 \ + --hash=sha256:875c355360d0f8d3d827e462b29ea7682bf52327d500a4f837e934e9e4656068 \ + --hash=sha256:e586f448df2bbc37dfadccdb7ccd125c62b4348cb90c10840d695592aa1b29e0 \ + --hash=sha256:2fe5e71e11a54e3355fa272137d521a40aace5d937d08b494bed4529964c19c4 \ + --hash=sha256:6110bab7eab6566492618540c70edd4d2a18f40ca1d51d704f1d81c52d245026 \ + --hash=sha256:4f64fc59fd5b10557f6cd0937e1597af022ad9b27d454e182485f1db3008f417 \ + --hash=sha256:89e5528803566af4df368df2d6f503c84fbfb8249e6631c7b025fe23e6bd0cde \ + --hash=sha256:2366fe0479ca0e9afa534174faa2beae87847d208d457d200183f28c74eaea59 \ + --hash=sha256:f9392a4555f3e4cb45310a65b403d86b589adc773898c25a39184b1ba4db8985 \ + --hash=sha256:2bceeb491b38225b1fee4517107b8491ba54fba77cf22a12e996d96a3c55613d \ + --hash=sha256:f98dc35ab9a749276f1a4a38ab3e0e2ba1662ce710f6530f5b0a6656f1c32b58 \ + --hash=sha256:319eb2a8d0888fa6f1d9177705f341bc9455a2c8aca130016e52c7fe8d6c37a3 \ + --hash=sha256:eaf58b9e30e0e546cdc3ac06cf9165a1ca5b3de8221e9df679416ca667972035 \ + --hash=sha256:4c9c3155fe74269f61e27617529b7f09552fbb12e44b1189cebbdb24294e6e1c \ + --hash=sha256:8394e266005f2d8c6f0bc6780001f7afa3ef81a7a2111fa35058ded6fce79e4d requests==2.25.1; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5" \ --hash=sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e \ --hash=sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804 @@ -438,9 +436,12 @@ uvloop==0.14.0 \ virtualenv==20.4.7; python_full_version >= "3.6.1" \ --hash=sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76 \ --hash=sha256:14fdf849f80dbb29a4eb6caa9875d476ee2a5cf76a5f5415fa2f1606010ab467 +vulture==2.3; python_version >= "3.6" \ + --hash=sha256:f39de5e6f1df1f70c3b50da54f1c8d494159e9ca3d01a9b89eac929600591703 \ + --hash=sha256:03d5a62bcbe9ceb9a9b0575f42d71a2d414070229f2e6f95fa6e7c71aaaed967 wcwidth==0.2.5; python_version >= "3.5" \ --hash=sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784 \ --hash=sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83 -zipp==3.5.0; python_version < "3.7" and python_version >= "3.6" and python_full_version >= "3.6.1" \ +zipp==3.5.0; python_version < "3.8" and python_version >= "3.6" \ --hash=sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3 \ --hash=sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4 diff --git a/setup.py b/setup.py index 46fb2a0..cceb2bd 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ 3, 7, 0, -), "blackhole requires Python 3.7+ or PyPy 3.7+" +), "blackhole requires Python 3.7+, PyPy 3.7+, or Pyston 2.2+" class PyTest(TestCommand): @@ -99,6 +99,8 @@ def get_version(filepath): "pytest-cov", "pytest-clarity", "doc8", + "codespell", + "vulture", ], } diff --git a/tests/conftest.py b/tests/conftest.py index 062d412..3f069ee 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- import pytest diff --git a/tox.ini b/tox.ini index 14a1225..d92e9cf 100644 --- a/tox.ini +++ b/tox.ini @@ -9,6 +9,8 @@ envlist = py39-{setproctitle,uvloop} pypy3 pypy3-{setproctitle,uvloop} + pyston-3 + pyston-3-{setproctitle,uvloop} build docs lint @@ -19,6 +21,7 @@ envlist = shellcheck coverage-report watch +isolated_build = True [gh-actions] python = @@ -26,18 +29,9 @@ python = 3.8: py38, py38-{setproctitle,uvloop} 3.9: py39, py39-{setproctitle,uvloop} pypy-3.7: pypy3, pypy3-{setproctitle,uvloop} + pyston-3: pyston-3, pyston-3-{setproctitle,uvloop} [testenv] -base_python = - py37: {env:TOXPYTHON:python3.7} - py38: {env:TOXPYTHON:python3.8} - py39: {env:TOXPYTHON:python3.9} - pypy3: {env:TOXPYTHON:pypy3} - py37-{setproctitle,uvloop}: {env:TOXPYTHON:python3.7} - py38-{setproctitle,uvloop}: {env:TOXPYTHON:python3.8} - py39-{setproctitle,uvloop}: {env:TOXPYTHON:python3.9} - pypy3-{setproctitle,uvloop}: {env:TOXPYTHON:pypy3} - {build,coverage-report,docs,lint,man,poetry,pre-commit,setuppy,shellcheck,watch}: {env:TOXPYTHON:python3.9} setenv = VIRTUALENV_NO_DOWNLOAD=1 deps = setproctitle: setproctitle @@ -47,19 +41,28 @@ commands = coverage run --parallel -m pytest \ --cache-clear \ --verbose blackhole tests -[testenv:py37] +[testenv:{py37,py37-setproctitle,py37-uvloop}] +basepython = python3.7 extras = tests setenv = PYTHONWARNINGS=d -[testenv:py38] +[testenv:{py38,py38-setproctitle,py38-uvloop}] +basepython = python3.8 extras = tests setenv = PYTHONWARNINGS=d -[testenv:py39] +[testenv:{py39,py39-setproctitle,py39-uvloop}] +basepython = python3.9 extras = tests setenv = PYTHONWARNINGS=d -[testenv:pypy3] +[testenv:{pypy3,pypy3-setproctitle,pypy3-uvloop}] +basepython = pypy3 +extras = tests +setenv = PYTHONWARNINGS=d + +[testenv:{pyston-3,pyston-3-setproctitle,pyston-3-uvloop}] +basepython = pyston3 extras = tests setenv = PYTHONWARNINGS=d @@ -106,6 +109,7 @@ deps = pydocstyle doc8 codespell + vulture commands = flake8 blackhole tests setup.py docs/source/conf.py black --check --verbose blackhole tests setup.py docs/source/conf.py @@ -115,6 +119,7 @@ commands = pydocstyle blackhole doc8 docs/source codespell --skip="./.tox,./docs/source/_extra,./docs/source/_static" + vulture --min-confidence 100 blackhole tests [testenv:man] skip_install = True @@ -124,7 +129,6 @@ commands = rst2man.py man/source/blackhole_config.rst {envtmpdir}/blackhole_config.1 [testenv:manifest] -basepython = python3.9 deps = check-manifest skip_install = true commands = check-manifest