sphinx-toolbox / extras_require

Display a warning at the top of module documentation that it has additional requirements.
https://extras-require.readthedocs.io/en/latest
BSD 2-Clause "Simplified" License
2 stars 1 forks source link

0.4.3: pytest is failing #47

Open kloczek opened 2 years ago

kloczek commented 2 years ago

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

I'm not sure but probably extras-require needs to be updated fro sphinx 5.x. Here is pytest output:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-extras-require-0.4.3-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-extras-require-0.4.3-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra =========================================================================== test session starts ============================================================================ platform linux -- Python 3.8.13, pytest-7.1.2, pluggy-1.0.0 Test session started at 05:09:33 rootdir: /home/tkloczko/rpmbuild/BUILD/extras_require-0.4.3, configfile: tox.ini plugins: datadir-1.3.1, regressions-2.3.1, timeout-2.1.0 timeout: 300.0s timeout method: signal timeout func_only: False collected 108 items tests/test_directive.py ......................................................FFFFFFF....... [ 62%] tests/test_flag.py .................. [ 79%] tests/test_from___pkginfo__.py .... [ 83%] tests/test_from_file.py .... [ 87%] tests/test_from_flit.py .... [ 90%] tests/test_from_pyproject.py .... [ 94%] tests/test_from_setup_cfg.py ..... [ 99%] tests/test_setup.py . [100%] ================================================================================= FAILURES ================================================================================= _______________________________________________________________________ test_output[flit_demo.html] ________________________________________________________________________ page =
html_regression = @pytest.mark.parametrize( "page", [ "flit_demo.html", "scopes_demo.html", "setup_cfg_demo.html", "requirements_file_demo.html", "pkginfo_demo.html", "manual_demo.html", ], indirect=True ) def test_output(page: BeautifulSoup, html_regression: HTMLRegressionFixture) -> None: > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_output_flit_demo_html_0/test_directive_/test_output_flit_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_output_flit_demo_html_0/test_directive_/test_output_flit_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_output_flit_demo_html_0/test_directive_/test_output_flit_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E flit Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E flit Demo E - E + E ¶ E E

tests/test_directive.py:234: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: ______________________________________________________________________ test_output[scopes_demo.html] _______________________________________________________________________ page = html_regression = @pytest.mark.parametrize( "page", [ "flit_demo.html", "scopes_demo.html", "setup_cfg_demo.html", "requirements_file_demo.html", "pkginfo_demo.html", "manual_demo.html", ], indirect=True ) def test_output(page: BeautifulSoup, html_regression: HTMLRegressionFixture) -> None: > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_output_scopes_demo_html_0/test_directive_/test_output_scopes_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_output_scopes_demo_html_0/test_directive_/test_output_scopes_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_output_scopes_demo_html_0/test_directive_/test_output_scopes_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E Scopes Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E Scopes Demo E - E + E ¶ E E

tests/test_directive.py:234: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: _____________________________________________________________________ test_output[setup_cfg_demo.html] _____________________________________________________________________ page = html_regression = @pytest.mark.parametrize( "page", [ "flit_demo.html", "scopes_demo.html", "setup_cfg_demo.html", "requirements_file_demo.html", "pkginfo_demo.html", "manual_demo.html", ], indirect=True ) def test_output(page: BeautifulSoup, html_regression: HTMLRegressionFixture) -> None: > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_output_setup_cfg_demo_htm0/test_directive_/test_output_setup_cfg_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_output_setup_cfg_demo_htm0/test_directive_/test_output_setup_cfg_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_output_setup_cfg_demo_htm0/test_directive_/test_output_setup_cfg_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E setup.cfg Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E setup.cfg Demo E - E + E ¶ E E

tests/test_directive.py:234: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: _________________________________________________________________ test_output[requirements_file_demo.html] _________________________________________________________________ page = html_regression = @pytest.mark.parametrize( "page", [ "flit_demo.html", "scopes_demo.html", "setup_cfg_demo.html", "requirements_file_demo.html", "pkginfo_demo.html", "manual_demo.html", ], indirect=True ) def test_output(page: BeautifulSoup, html_regression: HTMLRegressionFixture) -> None: > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_output_requirements_file_0/test_directive_/test_output_requirements_file_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_output_requirements_file_0/test_directive_/test_output_requirements_file_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_output_requirements_file_0/test_directive_/test_output_requirements_file_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E requirements.txt Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E requirements.txt Demo E - E + E ¶ E E

tests/test_directive.py:234: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: ______________________________________________________________________ test_output[pkginfo_demo.html] ______________________________________________________________________ page = html_regression = @pytest.mark.parametrize( "page", [ "flit_demo.html", "scopes_demo.html", "setup_cfg_demo.html", "requirements_file_demo.html", "pkginfo_demo.html", "manual_demo.html", ], indirect=True ) def test_output(page: BeautifulSoup, html_regression: HTMLRegressionFixture) -> None: > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_output_pkginfo_demo_html_0/test_directive_/test_output_pkginfo_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_output_pkginfo_demo_html_0/test_directive_/test_output_pkginfo_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_output_pkginfo_demo_html_0/test_directive_/test_output_pkginfo_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E __pkginfo__ Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E __pkginfo__ Demo E - E + E ¶ E E

tests/test_directive.py:234: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: ______________________________________________________________________ test_output[manual_demo.html] _______________________________________________________________________ page = html_regression = @pytest.mark.parametrize( "page", [ "flit_demo.html", "scopes_demo.html", "setup_cfg_demo.html", "requirements_file_demo.html", "pkginfo_demo.html", "manual_demo.html", ], indirect=True ) def test_output(page: BeautifulSoup, html_regression: HTMLRegressionFixture) -> None: > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_output_manual_demo_html_0/test_directive_/test_output_manual_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_output_manual_demo_html_0/test_directive_/test_output_manual_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_output_manual_demo_html_0/test_directive_/test_output_manual_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E Manual Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E Manual Demo E - E + E ¶ E E

tests/test_directive.py:234: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: ___________________________________________________________ test_no_requirements_demo[no_requirements_demo.html] ___________________________________________________________ page = html_regression = @pytest.mark.parametrize("page", ["no_requirements_demo.html"], indirect=True) def test_no_requirements_demo( page: BeautifulSoup, html_regression: HTMLRegressionFixture, ) -> None: # Make sure the page title is what you expect title = page.find("h1").contents[0].strip() assert "No Requirements Demo" == title # Now test the directive for div in page.findAll("div"): assert not div.get("id", '').startswith("extras_require") > html_regression.check(page, jinja2=True) E AssertionError: FILES DIFFER: E /tmp/pytest-of-tkloczko/pytest-83/test_no_requirements_demo_no_r0/test_directive_/test_no_requirements_demo_no_requirements_demo_html_.html E /tmp/pytest-of-tkloczko/pytest-83/test_no_requirements_demo_no_r0/test_directive_/test_no_requirements_demo_no_requirements_demo_html_.obtained.html E HTML DIFF: /tmp/pytest-of-tkloczko/pytest-83/test_no_requirements_demo_no_r0/test_directive_/test_no_requirements_demo_no_requirements_demo_html_.obtained.diff.html E --- E +++ E @@ -1,9 +1,9 @@ E E - E + E E E E - E + E E No Requirements Demo — Python documentation E E @@ -12,6 +12,8 @@ E E E + E E @@ -25,7 +27,7 @@ E
E

E No Requirements Demo E - E + E ¶ E E

tests/test_directive.py:250: AssertionError ------------------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------------- # testroot: root # builder: html # srcdir: /tmp/pytest-of-tkloczko/pytest-83/root # outdir: /tmp/pytest-of-tkloczko/pytest-83/root/_build/html # status: Running Sphinx v5.1.1 loading pickled environment... done building [mo]: all of 0 po files building [html]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found preparing documents... done writing output... [100%] setup_cfg_demo generating indices... genindex done writing additional pages... search done copying static files... done copying extra files... done dumping search index in English (code: en)... done dumping object inventory... done build succeeded. The HTML pages are in ../../../../../tmp/pytest-of-tkloczko/pytest-83/root/_build/html. # warning: ============================================================================= warnings summary ============================================================================= tests/test_directive.py::test tests/test_from_setup_cfg.py::test_from_setup_cfg[extra_c = faker; pytest; tox-extra_c-expects0] tests/test_from_setup_cfg.py::test_from_setup_cfg[extra_c =\n faker\n pytest\n tox; python<=3.6\n-extra_c-expects1] tests/test_from_setup_cfg.py::test_from_setup_cfg_errors[extra_c = faker; pytest; tox-extra-expects0] tests/test_from_setup_cfg.py::test_from_setup_cfg_errors[extra_c =\n faker\n pytest\n tox; python<=3.6\n-test-expects1] tests/test_from_setup_cfg.py::test_from_setup_cfg_missing_section /home/tkloczko/rpmbuild/BUILD/extras_require-0.4.3/sphinxcontrib/extras_require/sources.py:235: SetuptoolsDeprecationWarning: As setuptools moves its configuration towards `pyproject.toml`, `setuptools.config.read_configuration` became deprecated. For the time being, you can use the `setuptools.config.setupcfg` module to access a backward compatible API, but this module is provisional and might be removed in the future. setup_cfg = read_configuration(setup_cfg_file) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================================================================== slowest 25 durations =========================================================================== 0.32s call tests/test_directive.py::test 0.28s setup tests/test_directive.py::test_output[setup_cfg_demo.html] 0.23s setup tests/test_directive.py::test_output[scopes_demo.html] 0.23s setup tests/test_directive.py::test_output[flit_demo.html] 0.23s setup tests/test_directive.py::test_output[requirements_file_demo.html] 0.23s setup tests/test_directive.py::test_output[manual_demo.html] 0.23s setup tests/test_directive.py::test_output[pkginfo_demo.html] 0.22s setup tests/test_directive.py::test_no_requirements_demo[no_requirements_demo.html] 0.16s setup tests/test_directive.py::test 0.01s call tests/test_from_setup_cfg.py::test_from_setup_cfg[extra_c = faker; pytest; tox-extra_c-expects0] 0.01s call tests/test_from_setup_cfg.py::test_from_setup_cfg_missing_section 0.01s call tests/test_from_setup_cfg.py::test_from_setup_cfg_errors[extra_c = faker; pytest; tox-extra-expects0] 0.01s call tests/test_from_setup_cfg.py::test_from_setup_cfg[extra_c =\n faker\n pytest\n tox; python<=3.6\n-extra_c-expects1] 0.01s call tests/test_from_setup_cfg.py::test_from_setup_cfg_errors[extra_c =\n faker\n pytest\n tox; python<=3.6\n-test-expects1] 0.01s call tests/test_directive.py::test_output[scopes_demo.html] 0.01s call tests/test_directive.py::test_output[flit_demo.html] 0.01s call tests/test_directive.py::test_output[requirements_file_demo.html] 0.01s call tests/test_directive.py::test_output[setup_cfg_demo.html] 0.01s call tests/test_directive.py::test_output[pkginfo_demo.html] 0.01s call tests/test_directive.py::test_output[manual_demo.html] 0.01s call tests/test_directive.py::test_no_requirements_demo[no_requirements_demo.html] (4 durations < 0.005s hidden. Use -vv to show these durations.) ========================================================================= short test summary info ========================================================================== FAILED tests/test_directive.py::test_output[flit_demo.html] - AssertionError: FILES DIFFER: FAILED tests/test_directive.py::test_output[scopes_demo.html] - AssertionError: FILES DIFFER: FAILED tests/test_directive.py::test_output[setup_cfg_demo.html] - AssertionError: FILES DIFFER: FAILED tests/test_directive.py::test_output[requirements_file_demo.html] - AssertionError: FILES DIFFER: FAILED tests/test_directive.py::test_output[pkginfo_demo.html] - AssertionError: FILES DIFFER: FAILED tests/test_directive.py::test_output[manual_demo.html] - AssertionError: FILES DIFFER: FAILED tests/test_directive.py::test_no_requirements_demo[no_requirements_demo.html] - AssertionError: FILES DIFFER: ================================================================ 7 failed, 101 passed, 6 warnings in 2.97s ================================================================= ```

Here is list of modules installed in build env:

```console Package Version ----------------------------- ----------------- alabaster 0.7.12 apeye 1.2.0 appdirs 1.4.4 attrs 22.1.0 autodocsumm 0.2.9 Babel 2.10.2 beautifulsoup4 4.10.0 build 0.8.0 CacheControl 0.12.11 charset-normalizer 2.1.0 click 8.1.2 codespell 2.1.0 coincidence 0.6.2 consolekit 1.4.1 cssutils 2.5.1 default-values 0.5.1 deprecation 2.1.0 deprecation-alias 0.3.1 dict2css 0.3.0 dist-meta 0.5.0 distro 1.7.0 docutils 0.18.1 dom_toml 0.6.0 domdf-python-tools 3.2.2.post1 extras 1.0.0 fixtures 4.0.0 gpg 1.17.1-unknown handy-archives 0.1.2 html-section 0.2.0.post1 html5lib 1.1 idna 3.3 imagesize 1.4.1 importlib-metadata 4.12.0 iniconfig 1.1.1 Jinja2 3.1.1 libcomps 0.1.18 lit 14.0.6 lockfile 0.12.2 MarkupSafe 2.1.1 meson 0.63.0 mistletoe 0.8.2 msgpack 1.0.4 natsort 8.0.2 packaging 21.3 pbr 5.9.0 pep517 0.12.0 pip 22.2.1 platformdirs 2.5.2 pluggy 1.0.0 py 1.11.0 pychoosealicense 2022.7.25 Pygments 2.12.0 PyGObject 3.42.2 pyparsing 3.0.9 pypi-json 0.2.1 pyproject-parser 0.5.0 pytest 7.1.2 pytest-datadir 1.3.1 pytest-regressions 2.3.1 pytest-timeout 2.1.0 python-dateutil 2.8.2 python-frontmatter 1.0.0 pytz 2022.1 PyYAML 6.0 requests 2.28.1 rpm 4.17.0 ruamel.yaml 0.17.21 ruamel.yaml.clib 0.2.6 seed-intersphinx-mapping 1.0.1 setuptools 63.4.2 shippinglabel 1.0.1 six 1.16.0 snowballstemmer 2.2.0 soupsieve 2.3.2.post1 Sphinx 5.1.1 sphinx-autodoc-typehints 1.19.2 sphinx-copybutton 0.5.0 sphinx-debuginfo 0.2.2 sphinx-jinja2-compat 0.1.2 sphinx-licenseinfo 0.3.1 sphinx-notfound-page 0.8 sphinx-prompt 1.4.0 sphinx-pyproject 0.1.0 sphinx-tabs 3.4.1 sphinx-toolbox 3.1.2 sphinxcontrib-applehelp 1.0.2.dev20220730 sphinxcontrib-devhelp 1.0.2.dev20220730 sphinxcontrib-htmlhelp 2.0.0 sphinxcontrib-jsmath 1.0.1.dev20220730 sphinxcontrib-qthelp 1.0.3.dev20220730 sphinxcontrib-serializinghtml 1.1.5 sphinxemoji 0.2.0 tabulate 0.8.9 testtools 2.5.0 toctree-plus 0.6.0 toml 0.10.2 tomli 2.0.1 trove-classifiers 2022.8.8 typing_extensions 4.2.0 urllib3 1.26.11 webencodings 0.5.1 wheel 0.37.1 whey 0.0.23 zipp 3.8.1 ```
kloczek commented 1 year ago

Gentle ping .. just tested 0.5.0 and looks like now are failing more units Here is list of installed modules in build env

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-extras-require-0.5.0-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-extras-require-0.5.0-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.16, pytest-7.3.1, pluggy-1.0.0 Test session started at 12:12:58 rootdir: /home/tkloczko/rpmbuild/BUILD/extras_require-0.5.0 configfile: tox.ini plugins: cov-4.0.0, httpserver-1.0.4, mock-3.10.0, asyncio-0.21.0, datadir-1.4.1, regressions-2.4.2, timeout-2.1.0 asyncio: mode=strict timeout: 300.0s timeout method: signal timeout func_only: False collected 108 items tests/test_directive.py .....................................................EEEEEEEE....... [ 62%] tests/test_flag.py .................. [ 79%] tests/test_from___pkginfo__.py .... [ 83%] tests/test_from_file.py .... [ 87%] tests/test_from_flit.py .... [ 90%] tests/test_from_pyproject.py .... [ 94%] tests/test_from_setup_cfg.py FFFFF [ 99%] tests/test_setup.py . [100%] ========================================================================================== ERRORS =========================================================================================== __________________________________________________________________________________ ERROR at setup of test ___________________________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e96fb80>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning _______________________________________________________________________ ERROR at setup of test_output[flit_demo.html] _______________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e37e280>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning ______________________________________________________________________ ERROR at setup of test_output[scopes_demo.html] ______________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e1d98b0>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning ____________________________________________________________________ ERROR at setup of test_output[setup_cfg_demo.html] _____________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e078670>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning ________________________________________________________________ ERROR at setup of test_output[requirements_file_demo.html] _________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e2cd790>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning _____________________________________________________________________ ERROR at setup of test_output[pkginfo_demo.html] ______________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e078dc0>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning ______________________________________________________________________ ERROR at setup of test_output[manual_demo.html] ______________________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e37e9d0>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning __________________________________________________________ ERROR at setup of test_no_requirements_demo[no_requirements_demo.html] ___________________________________________________________ test_params = {'shared_result': None}, app_params = app_params(args=[], kwargs={'srcdir': path('/tmp/pytest-of-tkloczko/pytest-20/root')}) make_app = .make at 0x7f937e6c4ca0>, shared_result = @pytest.fixture(scope='function') def app(test_params: dict, app_params: tuple[dict, dict], make_app: Callable, shared_result: SharedResult) -> Generator[SphinxTestApp, None, None]: """ Provides the 'sphinx.application.Sphinx' object """ args, kwargs = app_params > app_ = make_app(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:132: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/sphinx/testing/fixtures.py:178: in make app_: Any = SphinxTestApp(*args, **kwargs) /usr/lib/python3.8/site-packages/sphinx/testing/util.py:138: in __init__ super().__init__(srcdir, confdir, outdir, doctreedir, /usr/lib/python3.8/site-packages/sphinx/application.py:225: in __init__ self.setup_extension(extension) /usr/lib/python3.8/site-packages/sphinx/application.py:404: in setup_extension self.registry.load_extension(self, extname) /usr/lib/python3.8/site-packages/sphinx/registry.py:442: in load_extension mod = import_module(extname) /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) /usr/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py:26: in from sphinx.util import progress_message /usr/lib/python3.8/site-packages/sphinx/util/__init__.py:408: in __getattr__ _deprecation_warning(__name__, name, canonical_name, remove=(8, 0)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ module = 'sphinx.util', attribute = 'progress_message', canonical_name = 'sphinx.http_date.epoch_to_rfc1123' def _deprecation_warning( module: str, attribute: str, canonical_name: str, *, remove: tuple[int, int], ) -> None: """Helper function for module-level deprecations using __getattr__ Exemplar usage: .. code:: python # deprecated name -> (object to return, canonical path or empty string) _DEPRECATED_OBJECTS = { 'deprecated_name': (object_to_return, 'fully_qualified_replacement_name'), } def __getattr__(name): if name not in _DEPRECATED_OBJECTS: raise AttributeError(f'module {__name__!r} has no attribute {name!r}') from sphinx.deprecation import _deprecation_warning deprecated_object, canonical_name = _DEPRECATED_OBJECTS[name] _deprecation_warning(__name__, name, canonical_name, remove=(7, 0)) return deprecated_object """ if remove == (7, 0): warning_class: type[Warning] = RemovedInSphinx70Warning elif remove == (8, 0): warning_class = RemovedInSphinx80Warning else: raise RuntimeError(f'removal version {remove!r} is invalid!') qualified_name = f'{module}.{attribute}' if canonical_name: message = (f'The alias {qualified_name!r} is deprecated, ' f'use {canonical_name!r} instead.') else: message = f'{qualified_name!r} is deprecated.' > warnings.warn(message + " Check CHANGES for Sphinx API modifications.", warning_class, stacklevel=3) E sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modifications. /usr/lib/python3.8/site-packages/sphinx/deprecation.py:63: RemovedInSphinx80Warning ========================================================================================= FAILURES ========================================================================================== ____________________________________________________________ test_from_setup_cfg[extra_c = faker; pytest; tox-extra_c-expects0] _____________________________________________________________ tmp_pathplus = PosixPathPlus('/tmp/pytest-of-tkloczko/pytest-20/test_from_setup_cfg_extra_c___0'), setup = 'extra_c = faker; pytest; tox', extra = 'extra_c' expects = ['faker', 'pytest', 'tox'] @pytest.mark.parametrize( "setup, extra, expects", [ ("extra_c = faker; pytest; tox", "extra_c", ["faker", "pytest", "tox"]), ( """\ extra_c = faker pytest tox; python<=3.6 """, "extra_c", ["faker", "pytest", "tox; python<=3.6"] ), ] ) def test_from_setup_cfg( tmp_pathplus: PathPlus, setup: str, extra: str, expects: List[str], ) -> None: setup_cfg_file = tmp_pathplus / "setup.cfg" setup_cfg_file.write_text(f"""\ [options.extras_require] {setup}""") > assert requirements_from_setup_cfg( package_root=PathPlus(), options={}, env=MockBuildEnvironment(tmp_pathplus), extra=extra, ) == expects tests/test_from_setup_cfg.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sphinxcontrib/extras_require/sources.py:238: in requirements_from_setup_cfg setup_cfg = read_configuration(setup_cfg_file) /usr/lib/python3.8/site-packages/setuptools/config/__init__.py:18: in _wrapper SetuptoolsDeprecationWarning.emit( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , summary = 'Deprecated API usage.' details = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' due_date = None, see_docs = None, see_url = None, stacklevel = 2, kwargs = {}, summary_ = 'Deprecated API usage.' details_ = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' docs_ref = None, docs_url = None, due = None text = 'Deprecated API usage.\n!!\n\n ********************************************************************************...p of ``configparser``.\n ********************************************************************************\n\n!!' @classmethod def emit( cls, summary: Optional[str] = None, details: Optional[str] = None, due_date: Optional[_DueDate] = None, see_docs: Optional[str] = None, see_url: Optional[str] = None, stacklevel: int = 2, **kwargs ): """Private: reserved for ``setuptools`` internal use only""" # Default values: summary_ = summary or getattr(cls, "_SUMMARY", None) or "" details_ = details or getattr(cls, "_DETAILS", None) or "" due_date = due_date or getattr(cls, "_DUE_DATE", None) docs_ref = see_docs or getattr(cls, "_SEE_DOCS", None) docs_url = docs_ref and f"https://setuptools.pypa.io/en/latest/{docs_ref}" see_url = see_url or getattr(cls, "_SEE_URL", None) due = date(*due_date) if due_date else None text = cls._format(summary_, details_, due, see_url or docs_url, kwargs) if due and due < date.today() and _should_enforce(): raise cls(text) > warnings.warn(text, cls, stacklevel=stacklevel + 1) E setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. E !! E E ******************************************************************************** E As setuptools moves its configuration towards `pyproject.toml`, E `setuptools.config.read_configuration` became deprecated. E E For the time being, you can use the `setuptools.config.setupcfg` module E to access a backward compatible API, but this module is provisional E and might be removed in the future. E E To read project metadata, consider using E ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/). E For simple scenarios, you can also try parsing the file directly E with the help of ``configparser``. E ******************************************************************************** E E !! /usr/lib/python3.8/site-packages/setuptools/warnings.py:47: SetuptoolsDeprecationWarning ______________________________________________ test_from_setup_cfg[extra_c =\n faker\n pytest\n tox; python<=3.6\n-extra_c-expects1] _______________________________________________ tmp_pathplus = PosixPathPlus('/tmp/pytest-of-tkloczko/pytest-20/test_from_setup_cfg_extra_c___1'), setup = 'extra_c =\n faker\n pytest\n tox; python<=3.6\n', extra = 'extra_c' expects = ['faker', 'pytest', 'tox; python<=3.6'] @pytest.mark.parametrize( "setup, extra, expects", [ ("extra_c = faker; pytest; tox", "extra_c", ["faker", "pytest", "tox"]), ( """\ extra_c = faker pytest tox; python<=3.6 """, "extra_c", ["faker", "pytest", "tox; python<=3.6"] ), ] ) def test_from_setup_cfg( tmp_pathplus: PathPlus, setup: str, extra: str, expects: List[str], ) -> None: setup_cfg_file = tmp_pathplus / "setup.cfg" setup_cfg_file.write_text(f"""\ [options.extras_require] {setup}""") > assert requirements_from_setup_cfg( package_root=PathPlus(), options={}, env=MockBuildEnvironment(tmp_pathplus), extra=extra, ) == expects tests/test_from_setup_cfg.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sphinxcontrib/extras_require/sources.py:238: in requirements_from_setup_cfg setup_cfg = read_configuration(setup_cfg_file) /usr/lib/python3.8/site-packages/setuptools/config/__init__.py:18: in _wrapper SetuptoolsDeprecationWarning.emit( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , summary = 'Deprecated API usage.' details = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' due_date = None, see_docs = None, see_url = None, stacklevel = 2, kwargs = {}, summary_ = 'Deprecated API usage.' details_ = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' docs_ref = None, docs_url = None, due = None text = 'Deprecated API usage.\n!!\n\n ********************************************************************************...p of ``configparser``.\n ********************************************************************************\n\n!!' @classmethod def emit( cls, summary: Optional[str] = None, details: Optional[str] = None, due_date: Optional[_DueDate] = None, see_docs: Optional[str] = None, see_url: Optional[str] = None, stacklevel: int = 2, **kwargs ): """Private: reserved for ``setuptools`` internal use only""" # Default values: summary_ = summary or getattr(cls, "_SUMMARY", None) or "" details_ = details or getattr(cls, "_DETAILS", None) or "" due_date = due_date or getattr(cls, "_DUE_DATE", None) docs_ref = see_docs or getattr(cls, "_SEE_DOCS", None) docs_url = docs_ref and f"https://setuptools.pypa.io/en/latest/{docs_ref}" see_url = see_url or getattr(cls, "_SEE_URL", None) due = date(*due_date) if due_date else None text = cls._format(summary_, details_, due, see_url or docs_url, kwargs) if due and due < date.today() and _should_enforce(): raise cls(text) > warnings.warn(text, cls, stacklevel=stacklevel + 1) E setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. E !! E E ******************************************************************************** E As setuptools moves its configuration towards `pyproject.toml`, E `setuptools.config.read_configuration` became deprecated. E E For the time being, you can use the `setuptools.config.setupcfg` module E to access a backward compatible API, but this module is provisional E and might be removed in the future. E E To read project metadata, consider using E ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/). E For simple scenarios, you can also try parsing the file directly E with the help of ``configparser``. E ******************************************************************************** E E !! /usr/lib/python3.8/site-packages/setuptools/warnings.py:47: SetuptoolsDeprecationWarning __________________________________________________________ test_from_setup_cfg_errors[extra_c = faker; pytest; tox-extra-expects0] __________________________________________________________ tmp_pathplus = PosixPathPlus('/tmp/pytest-of-tkloczko/pytest-20/test_from_setup_cfg_errors_ext0'), setup = 'extra_c = faker; pytest; tox', extra = 'extra' expects = ['faker', 'pytest', 'tox'] @pytest.mark.parametrize( "setup, extra, expects", [ ("extra_c = faker; pytest; tox", "extra", ["faker", "pytest", "tox"]), ( """\ extra_c = faker pytest tox; python<=3.6 """, "test", ["faker", "pytest", "tox; python<=3.6"] ), ] ) def test_from_setup_cfg_errors( tmp_pathplus: PathPlus, setup: str, extra: str, expects: List[str], ) -> None: setup_cfg_file = tmp_pathplus / "setup.cfg" setup_cfg_file.write_text(f"""\ [options.extras_require] {setup}""") with pytest.raises(ValueError, match=f"'{extra}' not found in '\\[options.extras_require\\]'"): > requirements_from_setup_cfg( package_root=PathPlus(), options={}, env=MockBuildEnvironment(tmp_pathplus), extra=extra, ) tests/test_from_setup_cfg.py:80: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sphinxcontrib/extras_require/sources.py:238: in requirements_from_setup_cfg setup_cfg = read_configuration(setup_cfg_file) /usr/lib/python3.8/site-packages/setuptools/config/__init__.py:18: in _wrapper SetuptoolsDeprecationWarning.emit( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , summary = 'Deprecated API usage.' details = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' due_date = None, see_docs = None, see_url = None, stacklevel = 2, kwargs = {}, summary_ = 'Deprecated API usage.' details_ = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' docs_ref = None, docs_url = None, due = None text = 'Deprecated API usage.\n!!\n\n ********************************************************************************...p of ``configparser``.\n ********************************************************************************\n\n!!' @classmethod def emit( cls, summary: Optional[str] = None, details: Optional[str] = None, due_date: Optional[_DueDate] = None, see_docs: Optional[str] = None, see_url: Optional[str] = None, stacklevel: int = 2, **kwargs ): """Private: reserved for ``setuptools`` internal use only""" # Default values: summary_ = summary or getattr(cls, "_SUMMARY", None) or "" details_ = details or getattr(cls, "_DETAILS", None) or "" due_date = due_date or getattr(cls, "_DUE_DATE", None) docs_ref = see_docs or getattr(cls, "_SEE_DOCS", None) docs_url = docs_ref and f"https://setuptools.pypa.io/en/latest/{docs_ref}" see_url = see_url or getattr(cls, "_SEE_URL", None) due = date(*due_date) if due_date else None text = cls._format(summary_, details_, due, see_url or docs_url, kwargs) if due and due < date.today() and _should_enforce(): raise cls(text) > warnings.warn(text, cls, stacklevel=stacklevel + 1) E setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. E !! E E ******************************************************************************** E As setuptools moves its configuration towards `pyproject.toml`, E `setuptools.config.read_configuration` became deprecated. E E For the time being, you can use the `setuptools.config.setupcfg` module E to access a backward compatible API, but this module is provisional E and might be removed in the future. E E To read project metadata, consider using E ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/). E For simple scenarios, you can also try parsing the file directly E with the help of ``configparser``. E ******************************************************************************** E E !! /usr/lib/python3.8/site-packages/setuptools/warnings.py:47: SetuptoolsDeprecationWarning ____________________________________________ test_from_setup_cfg_errors[extra_c =\n faker\n pytest\n tox; python<=3.6\n-test-expects1] _____________________________________________ tmp_pathplus = PosixPathPlus('/tmp/pytest-of-tkloczko/pytest-20/test_from_setup_cfg_errors_ext1'), setup = 'extra_c =\n faker\n pytest\n tox; python<=3.6\n', extra = 'test' expects = ['faker', 'pytest', 'tox; python<=3.6'] @pytest.mark.parametrize( "setup, extra, expects", [ ("extra_c = faker; pytest; tox", "extra", ["faker", "pytest", "tox"]), ( """\ extra_c = faker pytest tox; python<=3.6 """, "test", ["faker", "pytest", "tox; python<=3.6"] ), ] ) def test_from_setup_cfg_errors( tmp_pathplus: PathPlus, setup: str, extra: str, expects: List[str], ) -> None: setup_cfg_file = tmp_pathplus / "setup.cfg" setup_cfg_file.write_text(f"""\ [options.extras_require] {setup}""") with pytest.raises(ValueError, match=f"'{extra}' not found in '\\[options.extras_require\\]'"): > requirements_from_setup_cfg( package_root=PathPlus(), options={}, env=MockBuildEnvironment(tmp_pathplus), extra=extra, ) tests/test_from_setup_cfg.py:80: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sphinxcontrib/extras_require/sources.py:238: in requirements_from_setup_cfg setup_cfg = read_configuration(setup_cfg_file) /usr/lib/python3.8/site-packages/setuptools/config/__init__.py:18: in _wrapper SetuptoolsDeprecationWarning.emit( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , summary = 'Deprecated API usage.' details = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' due_date = None, see_docs = None, see_url = None, stacklevel = 2, kwargs = {}, summary_ = 'Deprecated API usage.' details_ = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' docs_ref = None, docs_url = None, due = None text = 'Deprecated API usage.\n!!\n\n ********************************************************************************...p of ``configparser``.\n ********************************************************************************\n\n!!' @classmethod def emit( cls, summary: Optional[str] = None, details: Optional[str] = None, due_date: Optional[_DueDate] = None, see_docs: Optional[str] = None, see_url: Optional[str] = None, stacklevel: int = 2, **kwargs ): """Private: reserved for ``setuptools`` internal use only""" # Default values: summary_ = summary or getattr(cls, "_SUMMARY", None) or "" details_ = details or getattr(cls, "_DETAILS", None) or "" due_date = due_date or getattr(cls, "_DUE_DATE", None) docs_ref = see_docs or getattr(cls, "_SEE_DOCS", None) docs_url = docs_ref and f"https://setuptools.pypa.io/en/latest/{docs_ref}" see_url = see_url or getattr(cls, "_SEE_URL", None) due = date(*due_date) if due_date else None text = cls._format(summary_, details_, due, see_url or docs_url, kwargs) if due and due < date.today() and _should_enforce(): raise cls(text) > warnings.warn(text, cls, stacklevel=stacklevel + 1) E setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. E !! E E ******************************************************************************** E As setuptools moves its configuration towards `pyproject.toml`, E `setuptools.config.read_configuration` became deprecated. E E For the time being, you can use the `setuptools.config.setupcfg` module E to access a backward compatible API, but this module is provisional E and might be removed in the future. E E To read project metadata, consider using E ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/). E For simple scenarios, you can also try parsing the file directly E with the help of ``configparser``. E ******************************************************************************** E E !! /usr/lib/python3.8/site-packages/setuptools/warnings.py:47: SetuptoolsDeprecationWarning ____________________________________________________________________________ test_from_setup_cfg_missing_section ____________________________________________________________________________ tmp_pathplus = PosixPathPlus('/tmp/pytest-of-tkloczko/pytest-20/test_from_setup_cfg_missing_se0') def test_from_setup_cfg_missing_section(tmp_pathplus: PathPlus) -> None: setup_cfg_file = tmp_pathplus / "setup.cfg" setup_cfg_file.write_text(f"""\ [metadata] name = FooBar author = Joe Bloggs """) with pytest.raises(ValueError, match="'options.extras_require' section not found in 'setup.cfg"): > requirements_from_setup_cfg( package_root=PathPlus(), options={}, env=MockBuildEnvironment(tmp_pathplus), extra="docs", ) tests/test_from_setup_cfg.py:97: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sphinxcontrib/extras_require/sources.py:238: in requirements_from_setup_cfg setup_cfg = read_configuration(setup_cfg_file) /usr/lib/python3.8/site-packages/setuptools/config/__init__.py:18: in _wrapper SetuptoolsDeprecationWarning.emit( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , summary = 'Deprecated API usage.' details = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' due_date = None, see_docs = None, see_url = None, stacklevel = 2, kwargs = {}, summary_ = 'Deprecated API usage.' details_ = '\n As setuptools moves its configuration towards `pyproject.toml`,\n `setuptools.config.read_co...le scenarios, you can also try parsing the file directly\n with the help of ``configparser``.\n ' docs_ref = None, docs_url = None, due = None text = 'Deprecated API usage.\n!!\n\n ********************************************************************************...p of ``configparser``.\n ********************************************************************************\n\n!!' @classmethod def emit( cls, summary: Optional[str] = None, details: Optional[str] = None, due_date: Optional[_DueDate] = None, see_docs: Optional[str] = None, see_url: Optional[str] = None, stacklevel: int = 2, **kwargs ): """Private: reserved for ``setuptools`` internal use only""" # Default values: summary_ = summary or getattr(cls, "_SUMMARY", None) or "" details_ = details or getattr(cls, "_DETAILS", None) or "" due_date = due_date or getattr(cls, "_DUE_DATE", None) docs_ref = see_docs or getattr(cls, "_SEE_DOCS", None) docs_url = docs_ref and f"https://setuptools.pypa.io/en/latest/{docs_ref}" see_url = see_url or getattr(cls, "_SEE_URL", None) due = date(*due_date) if due_date else None text = cls._format(summary_, details_, due, see_url or docs_url, kwargs) if due and due < date.today() and _should_enforce(): raise cls(text) > warnings.warn(text, cls, stacklevel=stacklevel + 1) E setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. E !! E E ******************************************************************************** E As setuptools moves its configuration towards `pyproject.toml`, E `setuptools.config.read_configuration` became deprecated. E E For the time being, you can use the `setuptools.config.setupcfg` module E to access a backward compatible API, but this module is provisional E and might be removed in the future. E E To read project metadata, consider using E ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/). E For simple scenarios, you can also try parsing the file directly E with the help of ``configparser``. E ******************************************************************************** E E !! /usr/lib/python3.8/site-packages/setuptools/warnings.py:47: SetuptoolsDeprecationWarning =================================================================================== slowest 25 durations ==================================================================================== 0.09s setup tests/test_directive.py::test 0.01s setup tests/test_directive.py::test_output[requirements_file_demo.html] 0.01s setup tests/test_directive.py::test_output[flit_demo.html] 0.01s setup tests/test_directive.py::test_output[pkginfo_demo.html] 0.01s setup tests/test_directive.py::test_output[scopes_demo.html] 0.01s setup tests/test_directive.py::test_no_requirements_demo[no_requirements_demo.html] 0.01s setup tests/test_directive.py::test_output[manual_demo.html] 0.01s setup tests/test_directive.py::test_output[setup_cfg_demo.html] (17 durations < 0.005s hidden. Use -vv to show these durations.) ================================================================================== short test summary info ================================================================================== ERROR tests/test_directive.py::test - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_output[flit_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_output[scopes_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_output[setup_cfg_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_output[requirements_file_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_output[pkginfo_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_output[manual_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... ERROR tests/test_directive.py::test_no_requirements_demo[no_requirements_demo.html] - sphinx.deprecation.RemovedInSphinx80Warning: The alias 'sphinx.util.progress_message' is deprecated, use 'sphinx.http_date.epoch_to_rfc1123' instead. Check CHANGES for Sphinx API modif... FAILED tests/test_from_setup_cfg.py::test_from_setup_cfg[extra_c = faker; pytest; tox-extra_c-expects0] - setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. FAILED tests/test_from_setup_cfg.py::test_from_setup_cfg[extra_c =\n faker\n pytest\n tox; python<=3.6\n-extra_c-expects1] - setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. FAILED tests/test_from_setup_cfg.py::test_from_setup_cfg_errors[extra_c = faker; pytest; tox-extra-expects0] - setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. FAILED tests/test_from_setup_cfg.py::test_from_setup_cfg_errors[extra_c =\n faker\n pytest\n tox; python<=3.6\n-test-expects1] - setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. FAILED tests/test_from_setup_cfg.py::test_from_setup_cfg_missing_section - setuptools.warnings.SetuptoolsDeprecationWarning: Deprecated API usage. ========================================================================== 5 failed, 95 passed, 8 errors in 1.30s =========================================================================== ```
kloczek commented 5 months ago

Looks like now with sphinx 7.2.6 pytest fails on deprecation error:

+ /usr/bin/pytest -ra -m 'not network'
ImportError while loading conftest '/home/tkloczko/rpmbuild/BUILD/extras_require-0.5.0/tests/conftest.py'.
tests/conftest.py:17: in <module>
    from sphinx.testing.path import path
/usr/lib/python3.10/site-packages/sphinx/testing/path.py:14: in <module>
    warnings.warn("'sphinx.testing.path' is deprecated. "
E   sphinx.deprecation.RemovedInSphinx90Warning: 'sphinx.testing.path' is deprecated. Use 'os.path' or 'pathlib' instead.