Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-akismet for openSUSE:Factory checked in at 2022-08-05 19:50:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-akismet (Old) and /work/SRC/openSUSE:Factory/.python-akismet.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-akismet" Fri Aug 5 19:50:48 2022 rev:5 rq:992782 version:1.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-akismet/python-akismet.changes 2021-12-14 22:01:53.751137654 +0100 +++ /work/SRC/openSUSE:Factory/.python-akismet.new.1521/python-akismet.changes 2022-08-05 19:51:45.777573716 +0200 @@ -1,0 +2,7 @@ +Thu Aug 4 08:32:22 UTC 2022 - Otto Hollmann <[email protected]> + +- Update to 1.2.1: + * Add support for python 3.10 + * Drop python 3.6 + +------------------------------------------------------------------- Old: ---- akismet-1.1.tar.gz New: ---- akismet-1.2.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-akismet.spec ++++++ --- /var/tmp/diff_new_pack.dQrJTL/_old 2022-08-05 19:51:46.233574893 +0200 +++ /var/tmp/diff_new_pack.dQrJTL/_new 2022-08-05 19:51:46.241574914 +0200 @@ -1,7 +1,7 @@ # # spec file # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # Copyright (c) 2017 Matthias Fehring <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -21,7 +21,7 @@ %define mod_name akismet %define skip_python2 1 Name: python-%{mod_name} -Version: 1.1 +Version: 1.2.1 Release: 0 Summary: Interface to the Akismet Anti Comment-Spam API License: BSD-3-Clause ++++++ akismet-1.1.tar.gz -> akismet-1.2.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/LICENSE new/akismet-1.2.1/LICENSE --- old/akismet-1.1/LICENSE 2020-02-02 04:47:03.000000000 +0100 +++ new/akismet-1.2.1/LICENSE 2022-05-27 06:40:39.000000000 +0200 @@ -1,4 +1,4 @@ -Copyright (c) 2005-2020, Michael Foord and James Bennett. All rights +Copyright (c) 2005-2022, Michael Foord and James Bennett. All rights reserved. Redistribution and use in source and binary forms, with or without diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/PKG-INFO new/akismet-1.2.1/PKG-INFO --- old/akismet-1.1/PKG-INFO 2020-02-02 06:04:43.000000000 +0100 +++ new/akismet-1.2.1/PKG-INFO 2022-05-27 07:15:38.859859700 +0200 @@ -1,33 +1,11 @@ -Metadata-Version: 1.2 +Metadata-Version: 2.1 Name: akismet -Version: 1.1 +Version: 1.2.1 Summary: A Python interface to the Akismet spam-filtering API. Home-page: https://github.com/ubernostrum/akismet Author: Michael Foord and James Bennett Author-email: [email protected] License: BSD 3-Clause -Description: .. -*-restructuredtext-*- - - .. image:: https://travis-ci.org/ubernostrum/akismet.svg?branch=master - :target: https://travis-ci.org/ubernostrum/akismet - - ``akismet`` is a Python (3.5+) library wrapping `the Wordpress Akismet - spam-detection service <https://akismet.com/>`_. All methods of the - Akismet API are supported: - - * Checking comments for spam - - * Reporting comments incorrectly classified as not spam - - * Reporting comments incorrectly classified as spam - - Use of this module requires an Akismet API key (which must be obtained - from the Akismet service). - - The Python ``akismet`` module was originally written by Michael Foord. - - Full documentation is `available online <http://akismet.readthedocs.io/>`_. -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers @@ -35,9 +13,33 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Utilities -Requires-Python: >=3.5 +Requires-Python: >=3.7 +License-File: LICENSE + +.. -*-restructuredtext-*- + +.. image:: https://github.com/ubernostrum/akismet/workflows/CI/badge.svg + :alt: CI status image + :target: https://github.com/ubernostrum/akismet/actions?query=workflow%3ACI + +``akismet`` is a Python library wrapping `the Wordpress Akismet +spam-detection service <https://akismet.com/>`_. All methods of the +Akismet API are supported: + +* Checking comments for spam + +* Reporting comments incorrectly classified as not spam + +* Reporting comments incorrectly classified as spam + +Use of this module requires an Akismet API key (which must be obtained +from the Akismet service). + +The Python ``akismet`` module was originally written by Michael Foord. + +Full documentation is `available online <http://akismet.readthedocs.io/>`_. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/README.rst new/akismet-1.2.1/README.rst --- old/akismet-1.1/README.rst 2020-02-02 04:46:54.000000000 +0100 +++ new/akismet-1.2.1/README.rst 2022-05-27 07:11:33.000000000 +0200 @@ -1,9 +1,10 @@ .. -*-restructuredtext-*- -.. image:: https://travis-ci.org/ubernostrum/akismet.svg?branch=master - :target: https://travis-ci.org/ubernostrum/akismet +.. image:: https://github.com/ubernostrum/akismet/workflows/CI/badge.svg + :alt: CI status image + :target: https://github.com/ubernostrum/akismet/actions?query=workflow%3ACI -``akismet`` is a Python (3.5+) library wrapping `the Wordpress Akismet +``akismet`` is a Python library wrapping `the Wordpress Akismet spam-detection service <https://akismet.com/>`_. All methods of the Akismet API are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/docs/conf.py new/akismet-1.2.1/docs/conf.py --- old/akismet-1.1/docs/conf.py 2020-02-02 05:57:16.000000000 +0100 +++ new/akismet-1.2.1/docs/conf.py 2022-05-27 07:12:01.000000000 +0200 @@ -1,7 +1,6 @@ import os import sys - on_rtd = os.environ.get("READTHEDOCS", None) == "True" extensions = ["sphinx.ext.intersphinx"] @@ -9,12 +8,11 @@ source_suffix = ".rst" master_doc = "index" project = "akismet" -copyright = "2005-2020, Michael Foord and James Bennett" -version = "1.1" -release = "1.1" +copyright = "2005-2022, Michael Foord and James Bennett" +version = "1.2" +release = "1.2.1" exclude_trees = ["_build"] pygments_style = "sphinx" -html_static_path = ["_static"] htmlhelp_basename = "akismetdoc" latex_documents = [ ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/docs/faq.rst new/akismet-1.2.1/docs/faq.rst --- old/akismet-1.1/docs/faq.rst 2020-01-30 04:04:19.000000000 +0100 +++ new/akismet-1.2.1/docs/faq.rst 2022-05-27 06:42:00.000000000 +0200 @@ -13,14 +13,14 @@ The |release| release of `akismet` supports the following versions of Python: -* Python 3.5 - -* Python 3.6 - * Python 3.7 * Python 3.8 +* Python 3.9 + +* Python 3.10 + Older versions of Python are not supported and will cause errors. @@ -91,8 +91,8 @@ identifying the application or platform with version, and Akismet plugin/implementation name with version. In accordance with this, `akismet` sends an HTTP `User-Agent` based on the versions of Python -and `akismet` in use. For example, `akismet` 1.1 on Python 3.5 will -send `Python/3.6 | akismet.py/1.1`. +and `akismet` in use. For example, `akismet` 1.1 on Python 3.7 will +send `Python/3.7 | akismet.py/1.1`. Does `akismet` support the "pro-tip" header? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/docs/index.rst new/akismet-1.2.1/docs/index.rst --- old/akismet-1.1/docs/index.rst 2020-02-02 04:40:12.000000000 +0100 +++ new/akismet-1.2.1/docs/index.rst 2022-05-27 07:11:44.000000000 +0200 @@ -1,7 +1,7 @@ akismet |release| ================= -`akismet` is a Python (3.5+) library wrapping `the Wordpress Akismet +`akismet` is a Python library wrapping `the Wordpress Akismet spam-filtering service <https://akismet.com/>`_. All methods of the Akismet API are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/docs/install.rst new/akismet-1.2.1/docs/install.rst --- old/akismet-1.1/docs/install.rst 2020-01-30 04:04:09.000000000 +0100 +++ new/akismet-1.2.1/docs/install.rst 2022-05-27 06:41:42.000000000 +0200 @@ -7,14 +7,14 @@ The |release| version of `akismet` is officially tested and supported on the following versions of Python: -* Python 3.5 - -* Python 3.6 - * Python 3.7 * Python 3.8 +* Python 3.9 + +* Python 3.10 + Normal installation ------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/docs/upgrade.rst new/akismet-1.2.1/docs/upgrade.rst --- old/akismet-1.1/docs/upgrade.rst 2020-02-02 04:46:18.000000000 +0100 +++ new/akismet-1.2.1/docs/upgrade.rst 2022-05-27 06:47:26.000000000 +0200 @@ -6,6 +6,12 @@ Changes within the 1.x release series ------------------------------------- +Version 1.2 +----------- + +* The supported Python versions are now 3.7, 3.8, 3.9, and + 3.10. Support for earlier Python 3 versions is dropped. + Version 1.1 ~~~~~~~~~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/setup.cfg new/akismet-1.2.1/setup.cfg --- old/akismet-1.1/setup.cfg 2020-02-02 06:04:43.000000000 +0100 +++ new/akismet-1.2.1/setup.cfg 2022-05-27 07:15:38.861101600 +0200 @@ -9,17 +9,17 @@ Operating System :: OS Independent Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.5 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 Topic :: Utilities description = A Python interface to the Akismet spam-filtering API. license = BSD 3-Clause long_description = file: README.rst name = akismet url = https://github.com/ubernostrum/akismet -version = 1.1 +version = 1.2.1 [options] install_requires = @@ -36,23 +36,14 @@ fail_under = 100 [flake8] -exclude = __pycache__,.pyc -ignore = - E203, - W503 +extend-ignore = E203 +max-complexity = 13 max-line-length = 88 [isort] known_first_party = akismet known_third_party = mock -lines_after_imports = 2 - -[mypy] -warn_no_return = False - -[mypy-akismet] -disallow_untyped_defs = True -disallow_untyped_calls = True +profile = black [egg_info] tag_build = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/setup.py new/akismet-1.2.1/setup.py --- old/akismet-1.1/setup.py 2020-01-29 08:11:20.000000000 +0100 +++ new/akismet-1.2.1/setup.py 2022-05-27 06:40:48.000000000 +0200 @@ -3,10 +3,9 @@ from setuptools import find_packages, setup - setup( packages=find_packages("src"), package_dir={"": "src"}, py_modules=[splitext(basename(path))[0] for path in glob("src/*.py")], - python_requires=">=3.5", + python_requires=">=3.7", ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/src/akismet.egg-info/PKG-INFO new/akismet-1.2.1/src/akismet.egg-info/PKG-INFO --- old/akismet-1.1/src/akismet.egg-info/PKG-INFO 2020-02-02 06:04:43.000000000 +0100 +++ new/akismet-1.2.1/src/akismet.egg-info/PKG-INFO 2022-05-27 07:15:38.000000000 +0200 @@ -1,33 +1,11 @@ -Metadata-Version: 1.2 +Metadata-Version: 2.1 Name: akismet -Version: 1.1 +Version: 1.2.1 Summary: A Python interface to the Akismet spam-filtering API. Home-page: https://github.com/ubernostrum/akismet Author: Michael Foord and James Bennett Author-email: [email protected] License: BSD 3-Clause -Description: .. -*-restructuredtext-*- - - .. image:: https://travis-ci.org/ubernostrum/akismet.svg?branch=master - :target: https://travis-ci.org/ubernostrum/akismet - - ``akismet`` is a Python (3.5+) library wrapping `the Wordpress Akismet - spam-detection service <https://akismet.com/>`_. All methods of the - Akismet API are supported: - - * Checking comments for spam - - * Reporting comments incorrectly classified as not spam - - * Reporting comments incorrectly classified as spam - - Use of this module requires an Akismet API key (which must be obtained - from the Akismet service). - - The Python ``akismet`` module was originally written by Michael Foord. - - Full documentation is `available online <http://akismet.readthedocs.io/>`_. -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers @@ -35,9 +13,33 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Utilities -Requires-Python: >=3.5 +Requires-Python: >=3.7 +License-File: LICENSE + +.. -*-restructuredtext-*- + +.. image:: https://github.com/ubernostrum/akismet/workflows/CI/badge.svg + :alt: CI status image + :target: https://github.com/ubernostrum/akismet/actions?query=workflow%3ACI + +``akismet`` is a Python library wrapping `the Wordpress Akismet +spam-detection service <https://akismet.com/>`_. All methods of the +Akismet API are supported: + +* Checking comments for spam + +* Reporting comments incorrectly classified as not spam + +* Reporting comments incorrectly classified as spam + +Use of this module requires an Akismet API key (which must be obtained +from the Akismet service). + +The Python ``akismet`` module was originally written by Michael Foord. + +Full documentation is `available online <http://akismet.readthedocs.io/>`_. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/src/akismet.py new/akismet-1.2.1/src/akismet.py --- old/akismet-1.1/src/akismet.py 2020-02-02 05:56:54.000000000 +0100 +++ new/akismet-1.2.1/src/akismet.py 2020-12-12 09:44:24.000000000 +0100 @@ -5,7 +5,6 @@ import requests - __version__ = "1.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/akismet-1.1/tox.ini new/akismet-1.2.1/tox.ini --- old/akismet-1.1/tox.ini 2020-01-30 04:00:40.000000000 +0100 +++ new/akismet-1.2.1/tox.ini 2022-05-27 06:42:48.000000000 +0200 @@ -1,112 +1,188 @@ -# Tox (https://tox.readthedocs.io/) is a tool for running tests -# in multiple virtualenvs. This configuration file will run the -# test suite on all supported python versions. To use it, "pip install tox" -# and then run "tox" from this directory. +# This is a configuration file for running tests, linters and other +# code-quality checks, using Tox (https://tox.readthedocs.io/), which +# allows configuring and automatically running many different test +# environments and checks, each in a separate Python virtual +# environment (and each potentially using a different version of +# Python). +# +# Using this file requires having tox installed -- "pip install tox" +# or refer to Tox's own documentation -- and a functioning +# installation of at least one targeted Python version. Running "tox" +# with no command-line arguments will attempt to run all environments +# against all targeted Python versions, and will fail if any Python +# versions are missing. To select only certain test environments to +# run, use the "-e" command-line flag and pass either a single +# environment name, or a comma-separated list of environment names. To +# see all available environments with their descriptions, run: +# "tox -v 1 --listenvs" + +# Base configuration: list of environments and Python versions. +################################################################################ + +# Environment matrix. [tox] envlist = - py35 - py36 - py37 - py38 + py{37,38,39,310} black + check-description + check-manifest docs - spelling flake8 isort + spelling -[cleanup] -commands = +# Configuration for running on GitHub Actions via tox-gh-actions. +[gh-actions] +python = + 3.6: py36 + 3.7: py37 + 3.8: py38 + 3.9: py39 + 3.10: py310, black, check-description, check-manifest, docs, flake8, isort, spelling + + +# The base test environment -- runs the unit test suite with coverage. +################################################################################ +[testenv] +description = Run tests with coverage report. +allowlist_externals = + find + rm +# Python silences deprecation warnings by default, but we want to see +# them during test runs. +setenv = + PYTHONWARNINGS=once::DeprecationWarning +# Ensure each virtualenv always has latest pip, so output doesn't get +# cluttered with messages about needing to upgrade it. Note that tox's +# 'download=true' option doesn't quite do the same thing: it ensures +# pip/setuptools/wheel get upgraded at virtualenv creation time, but +# will not upgrade them when reusing an already-created virtualenv. +commands_pre = + {envpython} -m pip install --upgrade pip +# Many test runs will leave behind some type of artifact -- Python +# bytecode, packaging-related files, coverage data -- which should be +# removed before the next run in order to ensure a clean starting +# point. The commands below run after the main test commands of each +# virtualenv, and perform this cleanup. +commands_post = find {toxinidir}/tests -type f -name "*.pyc" -delete find {toxinidir}/tests -type d -name "__pycache__" -delete find {toxinidir}/src -type f -name "*.pyc" -delete find {toxinidir}/src -type d -name "__pycache__" -delete find {toxinidir}/src -type f -path "*.egg-info*" -delete find {toxinidir}/src -type d -path "*.egg-info" -delete - rm -rf .cache - rm -f .coverage - rm -rf {toxinidir}/.pytest_cache - -[pipupgrade] + rm -f {toxinidir}/.coverage commands = - python -m pip install --upgrade pip + {posargs:pytest -vv --ignore=src --cov=akismet --cov-report term-missing} +deps = + pytest + pytest-cov +passenv = + TEST_AKISMET_API_KEY + TEST_AKISMET_BLOG_URL -[testenv:black] -basepython = python3.8 -changedir = {toxinidir} -deps = black -commands = - {[pipupgrade]commands} - black --line-length 88 --check --diff {toxinidir}/src {toxinidir}/tests {toxinidir}/docs {toxinidir} - {[cleanup]commands} +# Documentation checks. +################################################################################ +# Runs an HTML build of the documentation, and fails if there's an +# error in building it. [testenv:docs] +description = Check that the documentation can build. +basepython = python3.10 changedir = {toxinidir}/docs commands = - {[pipupgrade]commands} sphinx-build -b html -d {envtmpdir}/doctrees . {envtmpdir}/html - {[cleanup]commands} deps = sphinx sphinx_rtd_theme +# Runs a spelling checker over the documentation, and if misspelled +# words are found, fails the build and outputs a list of +# them. Requires the 'enchant' C library preinstalled on the target +# system. [testenv:spelling] +description = Spell-check documentation. +basepython = python3.10 changedir = {toxinidir}/docs +# This is the only env where we silence deprecation warnings, because +# we'd already catch any from our actual codebase elsewhere and in +# this env we are asking Sphinx to promote warnings to errors in order +# to fail the build on anything caught by the spelling checker. +setenv = + PYTHONWARNINGS=ignore::DeprecationWarning commands = - {[pipupgrade]commands} - sphinx-build -b spelling -d {envtmpdir}/doctrees . {envtmpdir}/html - {[cleanup]commands} + sphinx-build -W -b spelling -d {envtmpdir}/doctrees . {envtmpdir}/html deps = - {[testenv:docs]deps} + sphinx + sphinx_rtd_theme pyenchant sphinxcontrib-spelling + +# Linters. +################################################################################ + +# Runs the Black code formatter over the entire code base, and fails +# if Black thinks any files need to be reformatted. +[testenv:black] +description = Check code formatting using Black. +basepython = python3.10 +changedir = {toxinidir} +deps = black +commands = + black --line-length 88 --check --diff {toxinidir}/src {toxinidir}/tests {toxinidir}/docs {toxinidir} + +# Runs the flake8 linter over the entire code base, and fails if +# flake8 finds any problems. [testenv:flake8] +description = Lint code with flake8. +basepython = python3.10 changedir = {toxinidir} deps = flake8 commands = - {[pipupgrade]commands} flake8 {toxinidir}/src/akismet.py {toxinidir}/tests - {[cleanup]commands} +# Runs the isort import linter over the entire code base, and fails if +# any problems are found. [testenv:isort] +description = Lint imports with isort. +basepython = python3.10 changedir = {toxinidir} deps = isort commands = - {[pipupgrade]commands} - isort --recursive --check-only --diff {toxinidir}/src {toxinidir}/tests - {[cleanup]commands} + isort --check-only --diff {toxinidir}/src {toxinidir}/tests -[testenv:mypy] -basepython = python3.8 -changedir = {toxinidir} -deps = mypy -commands = - {[pipupgrade]commands} - mypy {toxinidir}/src {toxinidir}/tests - {[cleanup]commands} -[testenv] -whitelist_externals = - find - rm -setenv = - PYTHONWARNINGS=once::DeprecationWarning -commands = - {[pipupgrade]commands} - {posargs:pytest -vv --ignore=src --cov=akismet --cov-report term-missing} - {[cleanup]commands} -deps = - pytest - pytest-cov - zipp==1.1.0 -passenv = - TEST_AKISMET_API_KEY - TEST_AKISMET_BLOG_URL +# Packaging checks. +################################################################################ -[travis] -python = - 3.5: py35 - 3.6: py36 - 3.7: py37 - 3.8: py38, black, docs, flake8, isort, mypy, spelling +# Builds the package and runs 'twine check' to ensure it will render +# correctly when uploaded to the Python Package Index, or fail if not. +[testenv:check-description] +description = Check that the package description will render on the Python Package Index. +basepython = python3.10 +changedir = {toxinidir} +skip_install = true +deps = + twine +# In this environment we always want latest wheel in addition to +# latest pip. +commands_pre = + {envpython} -m pip install --upgrade pip setuptools wheel +commands = + {envpython} -m pip wheel -w {envtmpdir}/build --no-deps . + twine check {envtmpdir}/build/* + +# Runs check-manifest, a tool that builds the package and compares the +# files in the package to the files under version control, and fails +# if any version-controlled files do not end up in the package. +[testenv:check-manifest] +description = Check that the set of packaged files matches the set of version-controlled files. +basepython = python3.10 +changedir = {toxinidir} +skip_install = true +deps = + check-manifest +commands = + check-manifest --verbose
