[tox] env_list = py310, py311, py39, coverage, docs, package_description py38, fix_lint, hypothesis, khmer, khmer_master min_version = 3.27 isolated_build = true skip_missing_interpreters = true [testenv] description = run the tests with pytest under {basepython} package = wheel wheel_build_env = .pkg set_env = PIP_DISABLE_VERSION_CHECK = 1 COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}} VIRTUALENV_NO_DOWNLOAD = 1 PIP_EXTRA_INDEX_URL = https://antocuni.github.io/pypy-wheels/manylinux2010 pass_env = TOXENV CURL_CA_BUNDLE http_proxy https_proxy no_proxy REQUESTS_CA_BUNDLE SSL_CERT_FILE PYTEST_* PIP_CACHE_DIR CI PYTHONDEVMODE LIBCLANG_PATH BINDGEN_EXTRA_CLANG_ARGS deps = pip >= 19.3.1 extras = test storage commands = pytest \ --cov "{envsitepackagesdir}/sourmash" \ --cov-config "{toxinidir}/tox.ini" \ --cov-report= \ --junitxml {toxworkdir}/junit.{envname}.xml \ {posargs:doc tests} [testenv:pypy3] deps = pip >= 19.3.1 psutil <= 5.6.7 [testenv:hypothesis] commands = pytest \ --cov "{envsitepackagesdir}/sourmash" \ --cov-config "{toxinidir}/tox.ini" \ --cov-report= \ --junitxml {toxworkdir}/junit.{envname}.xml \ --run-hypothesis \ --hypothesis-show-statistics \ --hypothesis-profile ci \ {posargs:.} [testenv:khmer] basepython = python3.8 deps = khmer commands = pytest \ --cov "{envsitepackagesdir}/sourmash" \ --cov-config "{toxinidir}/tox.ini" \ --cov-report= \ --junitxml {toxworkdir}/junit.{envname}.xml \ -k test_nodegraph \ {posargs:.} [testenv:khmer_master] basepython = python3.8 deps = -e git+https://github.com/dib-lab/khmer.git\#egg=khmer commands = pytest \ --cov "{envsitepackagesdir}/sourmash" \ --cov-config "{toxinidir}/tox.ini" \ --cov-report= \ --junitxml {toxworkdir}/junit.{envname}.xml \ -k test_nodegraph \ {posargs:.} [testenv:asv] description = run asv for benchmarking (compare current commit with latest) deps = asv==0.5.1 virtualenv changedir = {toxinidir} commands = asv machine --yes asv continuous latest HEAD {posargs} [testenv:docs] description = invoke sphinx-build to build the HTML docs basepython = python3.10 extras = doc whitelist_externals = pandoc pass_env = HOME change_dir = {toxinidir} #commands = sphinx-build -d "{toxworkdir}/docs_doctree" doc "{toxworkdir}/docs_out" --color -W -bhtml {posargs} commands = sphinx-build -d "{toxworkdir}/docs_doctree" doc "{toxworkdir}/docs_out" --color -bhtml {posargs} python -c 'import pathlib; print("documentation available under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html"))' [testenv:package_description] description = check that the long description is valid basepython = python3.8 deps = twine >= 1.12.1 # TODO installing readme-renderer[md] should not be necessary readme-renderer[md] >= 24.0 pip >= 19.1 skip_install = true change_dir = {toxinidir} extras = commands = pip wheel -w {envtmpdir}/build --no-deps . twine check {envtmpdir}/build/* [testenv:mypy] description = run mypy checker basepython = python3.8 pass_env = {[testenv]pass_env} # without PROGRAMDATA cloning using git for Windows will fail with an `error setting certificate verify locations` error PROGRAMDATA deps = mypy commands = mypy src/sourmash [testenv:fix_lint] description = format the code base to adhere to our styles, and complain about what we cannot do automatically basepython = python3.8 pass_env = {[testenv]pass_env} # without PROGRAMDATA cloning using git for Windows will fail with an `error setting certificate verify locations` error PROGRAMDATA PRE_COMMIT_HOME extras = lint deps = pre-commit>=2 skip_install = True commands = pre-commit run --all-files --show-diff-on-failure {posargs} python -c 'import pathlib; print("hint: run \{\} install to add checks as pre-commit hook".format(pathlib.Path(r"{envdir}") / "bin" / "pre-commit"))' [testenv:coverage] description = [run locally after tests]: combine coverage data and create report; generates a diff coverage against origin/latest (can be changed by setting DIFF_AGAINST env var) deps = {[testenv]deps} coverage >= 5.0.1 diff_cover skip_install = True pass_env = {[testenv]pass_env} DIFF_AGAINST set_env = COVERAGE_FILE={toxworkdir}/.coverage commands = coverage combine coverage report -i -m coverage xml -i -o {toxworkdir}/coverage.xml coverage html -i -d {toxworkdir}/htmlcov diff-cover --compare-branch {env:DIFF_AGAINST:origin/latest} {toxworkdir}/coverage.xml depends = py39, py38, py37, pypy3 parallel_show_output = True [testenv:X] description = print the positional arguments passed in with echo commands = echo {posargs} [coverage:run] branch = true parallel = true [coverage:report] skip_covered = True show_missing = True exclude_lines = \#\s*pragma: no cover ^\s*raise AssertionError\b ^\s*raise NotImplementedError\b ^\s*return NotImplemented\b ^\s*raise$ ^if __name__ == ['"]__main__['"]:$ [coverage:paths] source = src/sourmash/ tests/ */.tox/*/lib/python*/site-packages/sourmash */.tox/pypy*/site-packages/sourmash */.tox\*\Lib\site-packages\sourmash */src/sourmash *\src\sourmash */tests *\tests [gh-actions] python = 3.10: py310, docs, package_description, coverage 3.11: py311, coverage 3.9: py39, coverage 3.8: py38, coverage [flake8] max-complexity = 22 max-line-length = 99 ignore = E203, W503, C901, E402, B011 [pep8] max-line-length = 99 [testenv:dev] description = dev environment with all deps at {envdir} extras = test storage doc deps = {[testenv]deps} usedevelop = True commands = python -m pip list --format=columns python -c "print(r'{envpython}')"