>>> py3-sphinx-autodoc-typehints: Building community/py3-sphinx-autodoc-typehints 3.0.1-r0 (using abuild 3.15.0_rc3-r1) started Sat, 03 May 2025 05:30:50 +0000 >>> py3-sphinx-autodoc-typehints: Validating /home/buildozer/aports/community/py3-sphinx-autodoc-typehints/APKBUILD... >>> py3-sphinx-autodoc-typehints: Analyzing dependencies... >>> py3-sphinx-autodoc-typehints: Installing for build: build-base python3 py3-sphinx py3-typing-extensions py3-gpep517 py3-installer py3-hatchling py3-hatch-vcs py3-pytest py3-sphobjinv (1/106) Installing libbz2 (1.0.8-r6) (2/106) Installing libffi (3.4.8-r0) (3/106) Installing gdbm (1.24-r0) (4/106) Installing xz-libs (5.8.1-r0) (5/106) Installing mpdecimal (4.0.0-r0) (6/106) Installing libpanelw (6.5_p20250412-r0) (7/106) Installing sqlite-libs (3.49.1-r1) (8/106) Installing python3 (3.12.10-r0) (9/106) Installing python3-pycache-pyc0 (3.12.10-r0) (10/106) Installing pyc (3.12.10-r0) (11/106) Installing python3-pyc (3.12.10-r0) (12/106) Installing py3-tz (2025.2-r0) (13/106) Installing py3-tz-pyc (2025.2-r0) (14/106) Installing py3-parsing (3.2.0-r0) (15/106) Installing py3-parsing-pyc (3.2.0-r0) (16/106) Installing py3-packaging (25.0-r0) (17/106) Installing py3-packaging-pyc (25.0-r0) (18/106) Installing py3-setuptools (77.0.3-r0) (19/106) Installing py3-setuptools-pyc (77.0.3-r0) (20/106) Installing py3-babel (2.17.0-r0) (21/106) Installing py3-babel-pyc (2.17.0-r0) (22/106) Installing py3-docutils (0.21.2-r0) (23/106) Installing py3-docutils-pyc (0.21.2-r0) (24/106) Installing py3-imagesize (1.4.1-r4) (25/106) Installing py3-imagesize-pyc (1.4.1-r4) (26/106) Installing py3-markupsafe (3.0.2-r0) (27/106) Installing py3-markupsafe-pyc (3.0.2-r0) (28/106) Installing py3-jinja2 (3.1.6-r0) (29/106) Installing py3-jinja2-pyc (3.1.6-r0) (30/106) Installing py3-pygments (2.19.1-r1) (31/106) Installing py3-pygments-pyc (2.19.1-r1) (32/106) Installing py3-certifi (2024.12.14-r0) (33/106) Installing py3-certifi-pyc (2024.12.14-r0) (34/106) Installing py3-charset-normalizer (3.4.1-r0) (35/106) Installing py3-charset-normalizer-pyc (3.4.1-r0) (36/106) Installing py3-idna (3.10-r0) (37/106) Installing py3-idna-pyc (3.10-r0) (38/106) Installing py3-urllib3 (1.26.20-r0) (39/106) Installing py3-urllib3-pyc (1.26.20-r0) (40/106) Installing py3-requests (2.32.3-r0) (41/106) Installing py3-requests-pyc (2.32.3-r0) (42/106) Installing py3-snowballstemmer (2.2.0-r5) (43/106) Installing py3-snowballstemmer-pyc (2.2.0-r5) (44/106) Installing py3-alabaster (1.0.0-r0) (45/106) Installing py3-alabaster-pyc (1.0.0-r0) (46/106) Installing py3-roman-numerals (3.1.0-r0) (47/106) Installing py3-roman-numerals-pyc (3.1.0-r0) (48/106) Installing py3-sphinxcontrib-applehelp (1.0.4-r3) (49/106) Installing py3-sphinxcontrib-applehelp-pyc (1.0.4-r3) (50/106) Installing py3-sphinxcontrib-devhelp (1.0.5-r2) (51/106) Installing py3-sphinxcontrib-devhelp-pyc (1.0.5-r2) (52/106) Installing py3-sphinxcontrib-htmlhelp (2.0.1-r3) (53/106) Installing py3-sphinxcontrib-htmlhelp-pyc (2.0.1-r3) (54/106) Installing py3-sphinxcontrib-jsmath (1.0.1-r8) (55/106) Installing py3-sphinxcontrib-jsmath-pyc (1.0.1-r8) (56/106) Installing py3-sphinxcontrib-serializinghtml (1.1.9-r2) (57/106) Installing py3-sphinxcontrib-serializinghtml-pyc (1.1.9-r2) (58/106) Installing py3-sphinxcontrib-qthelp (2.0.0-r0) (59/106) Installing py3-sphinxcontrib-qthelp-pyc (2.0.0-r0) (60/106) Installing py3-sphinx (8.2.3-r1) (61/106) Installing py3-sphinx-pyc (8.2.3-r1) (62/106) Installing py3-typing-extensions (4.13.2-r0) (63/106) Installing py3-typing-extensions-pyc (4.13.2-r0) (64/106) Installing py3-installer (0.7.0-r2) (65/106) Installing py3-installer-pyc (0.7.0-r2) (66/106) Installing py3-gpep517 (16-r0) (67/106) Installing py3-gpep517-pyc (16-r0) (68/106) Installing py3-editables (0.5-r2) (69/106) Installing py3-editables-pyc (0.5-r2) (70/106) Installing py3-pathspec (0.12.1-r2) (71/106) Installing py3-pathspec-pyc (0.12.1-r2) (72/106) Installing py3-pluggy (1.5.0-r0) (73/106) Installing py3-pluggy-pyc (1.5.0-r0) (74/106) Installing py3-trove-classifiers (2025.1.15.22-r0) (75/106) Installing py3-trove-classifiers-pyc (2025.1.15.22-r0) (76/106) Installing py3-hatchling (1.27.0-r0) (77/106) Installing py3-hatchling-pyc (1.27.0-r0) (78/106) Installing py3-setuptools_scm (8.2.0-r0) (79/106) Installing py3-setuptools_scm-pyc (8.2.0-r0) (80/106) Installing py3-hatch-vcs (0.4.0-r2) (81/106) Installing py3-hatch-vcs-pyc (0.4.0-r2) (82/106) Installing py3-iniconfig (2.1.0-r0) (83/106) Installing py3-iniconfig-pyc (2.1.0-r0) (84/106) Installing py3-py (1.11.0-r4) (85/106) Installing py3-py-pyc (1.11.0-r4) (86/106) Installing py3-pytest (8.3.5-r0) (87/106) Installing py3-pytest-pyc (8.3.5-r0) (88/106) Installing py3-attrs (25.3.0-r0) (89/106) Installing py3-attrs-pyc (25.3.0-r0) (90/106) Installing py3-rpds-py (0.22.3-r0) (91/106) Installing py3-rpds-py-pyc (0.22.3-r0) (92/106) Installing py3-referencing (0.36.2-r1) (93/106) Installing py3-referencing-pyc (0.36.2-r1) (94/106) Installing py3-jsonschema-specifications (2025.4.1-r0) (95/106) Installing py3-jsonschema-specifications-pyc (2025.4.1-r0) (96/106) Installing py3-jsonschema (4.23.0-r0) (97/106) Installing py3-jsonschema-pyc (4.23.0-r0) (98/106) Installing py3-rapidfuzz (3.13.0-r0) (99/106) Installing py3-rapidfuzz-pyc (3.13.0-r0) (100/106) Installing py3-levenshtein (0.27.1-r0) (101/106) Installing py3-levenshtein-pyc (0.27.1-r0) (102/106) Installing py3-fuzzywuzzy (0.18.0-r7) (103/106) Installing py3-fuzzywuzzy-pyc (0.18.0-r7) (104/106) Installing py3-sphobjinv (2.3.1.2-r0) (105/106) Installing py3-sphobjinv-pyc (2.3.1.2-r0) (106/106) Installing .makedepends-py3-sphinx-autodoc-typehints (20250503.053055) Executing busybox-1.37.0-r16.trigger OK: 485 MiB in 208 packages >>> py3-sphinx-autodoc-typehints: Cleaning up srcdir >>> py3-sphinx-autodoc-typehints: Cleaning up pkgdir >>> py3-sphinx-autodoc-typehints: Cleaning up tmpdir >>> py3-sphinx-autodoc-typehints: Fetching https://distfiles.alpinelinux.org/distfiles/v3.22/sphinx-autodoc-typehints-3.0.1.tar.gz >>> py3-sphinx-autodoc-typehints: Fetching https://distfiles.alpinelinux.org/distfiles/v3.22/sphinx-autodoc-typehints-3.0.1.tar.gz >>> py3-sphinx-autodoc-typehints: Checking sha512sums... sphinx-autodoc-typehints-3.0.1.tar.gz: OK >>> py3-sphinx-autodoc-typehints: Unpacking /var/cache/distfiles/v3.22/sphinx-autodoc-typehints-3.0.1.tar.gz... 2025-05-03 05:30:56,400 gpep517 INFO Building wheel via backend hatchling.build 2025-05-03 05:30:56,556 gpep517 INFO The backend produced .dist/sphinx_autodoc_typehints-3.0.1-py3-none-any.whl sphinx_autodoc_typehints-3.0.1-py3-none-any.whl ============================= test session starts ============================== platform linux -- Python 3.12.10, pytest-8.3.5, pluggy-1.5.0 rootdir: /home/buildozer/aports/community/py3-sphinx-autodoc-typehints/src/sphinx-autodoc-typehints-3.0.1 configfile: pyproject.toml testpaths: tests collected 327 items tests/test_integration.py .................F.......F..............F..... [ 14%] ............F.......F..............F.................F.......F.......... [ 36%] ....F.................F.......F..............F [ 50%] tests/test_integration_autodoc_type_aliases.py .FF [ 51%] tests/test_integration_issue_384.py . [ 51%] tests/test_sphinx_autodoc_typehints.py ................................. [ 61%] ........................................................................ [ 83%] ..................................................... [ 99%] tests/test_version.py . [100%] =================================== FAILURES =================================== ____________ test_integration[default_conf-TestClassAttributeDocs] _____________ app = status = <_io.StringIO object at 0x3ff7e15fc40> warning = <_io.StringIO object at 0x3ff7e15ed40> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7e149ac0> val = conf_run = 'default_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2357: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: _________ test_integration[default_conf-ParamAndAttributeHaveSameName] _________ app = status = <_io.StringIO object at 0x3ff7f14bdc0> warning = <_io.StringIO object at 0x3ff7f14bf40> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7dcd1520> val = conf_run = 'default_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2357: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: ___ test_integration[default_conf-typehints_formatter_applied_to_signature] ____ app = status = <_io.StringIO object at 0x3ff7e15f940> warning = <_io.StringIO object at 0x3ff7e15fe80> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7df23ef0> val = conf_run = 'default_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) app.build() assert "build succeeded" in status.getvalue() # Build succeeded regexp = getattr(val, "WARNING", None) value = warning.getvalue().strip() if regexp: msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" > assert re.search(regexp, value), msg E AssertionError: Regex pattern did not match. E Regex: "cannot cache unpickable configuration value: 'typehints_formatter'" E Input: "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m" E assert None E + where None = ("cannot cache unpickable configuration value: 'typehints_formatter'", "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m") E + where = re.search tests/test_integration.py:1461: AssertionError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets...  copying assets: done writing output... [100%] index build succeeded, 1 warning. The text files are in ../../../../../../../tmp/pytest-of-buildozer/pytest-126/integration/_build/text. # warning: WARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache] _____________ test_integration[prolog_conf-TestClassAttributeDocs] _____________ app = status = <_io.StringIO object at 0x3ff7e3068c0> warning = <_io.StringIO object at 0x3ff7e306c80> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7e2df2f0> val = conf_run = 'prolog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2359: in explicit_markup self.explicit_list(blank_finish) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2384: in explicit_list newline_offset, blank_finish = self.nested_list_parse( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:316: in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:195: in run results = StateMachineWS.run(self, input_lines, input_offset) /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2662: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: _________ test_integration[prolog_conf-ParamAndAttributeHaveSameName] __________ app = status = <_io.StringIO object at 0x3ff7e15ea40> warning = <_io.StringIO object at 0x3ff7e15c400> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7e16e0f0> val = conf_run = 'prolog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2359: in explicit_markup self.explicit_list(blank_finish) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2384: in explicit_list newline_offset, blank_finish = self.nested_list_parse( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:316: in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:195: in run results = StateMachineWS.run(self, input_lines, input_offset) /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2662: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: ____ test_integration[prolog_conf-typehints_formatter_applied_to_signature] ____ app = status = <_io.StringIO object at 0x3ff7e15c580> warning = <_io.StringIO object at 0x3ff7e15c280> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7e136f60> val = conf_run = 'prolog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) app.build() assert "build succeeded" in status.getvalue() # Build succeeded regexp = getattr(val, "WARNING", None) value = warning.getvalue().strip() if regexp: msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" > assert re.search(regexp, value), msg E AssertionError: Regex pattern did not match. E Regex: "cannot cache unpickable configuration value: 'typehints_formatter'" E Input: "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m" E assert None E + where None = ("cannot cache unpickable configuration value: 'typehints_formatter'", "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m") E + where = re.search tests/test_integration.py:1461: AssertionError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets...  copying assets: done writing output... [100%] index build succeeded, 1 warning. The text files are in ../../../../../../../tmp/pytest-of-buildozer/pytest-126/integration/_build/text. # warning: WARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache] _____________ test_integration[epilog_conf-TestClassAttributeDocs] _____________ app = status = <_io.StringIO object at 0x3ff7e15fc40> warning = <_io.StringIO object at 0x3ff7e305840> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7dc938f0> val = conf_run = 'epilog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2357: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: _________ test_integration[epilog_conf-ParamAndAttributeHaveSameName] __________ app = status = <_io.StringIO object at 0x3ff7e15e8c0> warning = <_io.StringIO object at 0x3ff7e15d0c0> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7deded80> val = conf_run = 'epilog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2357: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: ____ test_integration[epilog_conf-typehints_formatter_applied_to_signature] ____ app = status = <_io.StringIO object at 0x3ff7e15d300> warning = <_io.StringIO object at 0x3ff7e15fa00> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7de2aab0> val = conf_run = 'epilog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) app.build() assert "build succeeded" in status.getvalue() # Build succeeded regexp = getattr(val, "WARNING", None) value = warning.getvalue().strip() if regexp: msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" > assert re.search(regexp, value), msg E AssertionError: Regex pattern did not match. E Regex: "cannot cache unpickable configuration value: 'typehints_formatter'" E Input: "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m" E assert None E + where None = ("cannot cache unpickable configuration value: 'typehints_formatter'", "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m") E + where = re.search tests/test_integration.py:1461: AssertionError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets...  copying assets: done writing output... [100%] index build succeeded, 1 warning. The text files are in ../../../../../../../tmp/pytest-of-buildozer/pytest-126/integration/_build/text. # warning: WARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache] ____________ test_integration[bothlog_conf-TestClassAttributeDocs] _____________ app = status = <_io.StringIO object at 0x3ff7e305780> warning = <_io.StringIO object at 0x3ff7e3056c0> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7dc3d6d0> val = conf_run = 'bothlog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2359: in explicit_markup self.explicit_list(blank_finish) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2384: in explicit_list newline_offset, blank_finish = self.nested_list_parse( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:316: in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:195: in run results = StateMachineWS.run(self, input_lines, input_offset) /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2662: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: _________ test_integration[bothlog_conf-ParamAndAttributeHaveSameName] _________ app = status = <_io.StringIO object at 0x3ff7e15d240> warning = <_io.StringIO object at 0x3ff7e15ef80> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7e35a900> val = conf_run = 'bothlog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) > app.build() tests/test_integration.py:1454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/sphinx/testing/util.py:237: in build super().build(force_all, filenames) /usr/lib/python3.12/site-packages/sphinx/application.py:426: in build self.builder.build_update() /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:375: in build_update self.build( /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:403: in build updated_docnames = set(self.read()) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:519: in read self._read_serial(docnames) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:584: in _read_serial self.read_doc(docname) /usr/lib/python3.12/site-packages/sphinx/builders/__init__.py:648: in read_doc publisher.publish() /usr/lib/python3.12/site-packages/docutils/core.py:234: in publish self.document = self.reader.read(self.source, self.parser, /usr/lib/python3.12/site-packages/sphinx/io.py:103: in read self.parse() /usr/lib/python3.12/site-packages/docutils/readers/__init__.py:76: in parse self.parser.parse(self.input, document) /usr/lib/python3.12/site-packages/sphinx/parsers.py:86: in parse self.statemachine.run(inputlines, document, inliner=self.inliner) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:169: in run results = StateMachineWS.run(self, input_lines, input_offset, /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2359: in explicit_markup self.explicit_list(blank_finish) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2384: in explicit_list newline_offset, blank_finish = self.nested_list_parse( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:316: in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:195: in run results = StateMachineWS.run(self, input_lines, input_offset) /usr/lib/python3.12/site-packages/docutils/statemachine.py:233: in run context, next_state, result = self.check_line( /usr/lib/python3.12/site-packages/docutils/statemachine.py:445: in check_line return method(match, context, next_state) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2662: in explicit_markup nodelist, blank_finish = self.explicit_construct(match) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2369: in explicit_construct return method(self, expmatch) /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2106: in directive return self.run_directive( /usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py:2156: in run_directive result = directive_instance.run() /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/directive.py:175: in run documenter.generate(more_content=self.content) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2133: in generate return super().generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1034: in generate self._generate(more_content, real_modname, check_module, all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1121: in _generate self.document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2119: in document_members super().document_members(all_members) /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:968: in document_members documenter._generate( /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:1111: in _generate self.add_directive_header(sig) test-env/lib/python3.12/site-packages/sphinx_autodoc_typehints/attributes_patch.py:58: in add_directive_header return orig_add_directive_header(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = sig = '' def add_directive_header(self, sig: str) -> None: super().add_directive_header(sig) sourcename = self.get_sourcename() if ( self.options.annotation is SUPPRESS or self.should_suppress_directive_header() ): pass elif self.options.annotation: self.add_line(' :annotation: %s' % self.options.annotation, sourcename) else: if self.config.autodoc_typehints != 'none': # obtain type annotation for this attribute annotations = get_type_hints( self.parent, None, self.config.autodoc_type_aliases, include_extras=True, ) if self.objpath[-1] in annotations: mode = _get_render_mode(self.config.autodoc_typehints_format) short_literals = self.config.python_display_short_literal_types > objrepr = stringify_annotation( annotations.get(self.objpath[-1]), mode, short_literals=short_literals, ) E TypeError: _stringify_annotation() got an unexpected keyword argument 'short_literals' /usr/lib/python3.12/site-packages/sphinx/ext/autodoc/__init__.py:2980: TypeError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index # warning: ___ test_integration[bothlog_conf-typehints_formatter_applied_to_signature] ____ app = status = <_io.StringIO object at 0x3ff7e15f640> warning = <_io.StringIO object at 0x3ff7e15cd00> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7df96720> val = conf_run = 'bothlog_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", ["default_conf", "prolog_conf", "epilog_conf", "bothlog_conf"]) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: if isclass(val) and issubclass(val, BaseException): template = AUTO_EXCEPTION elif isclass(val): template = AUTO_CLASS else: template = AUTO_FUNCTION (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) app.build() assert "build succeeded" in status.getvalue() # Build succeeded regexp = getattr(val, "WARNING", None) value = warning.getvalue().strip() if regexp: msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" > assert re.search(regexp, value), msg E AssertionError: Regex pattern did not match. E Regex: "cannot cache unpickable configuration value: 'typehints_formatter'" E Input: "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m" E assert None E + where None = ("cannot cache unpickable configuration value: 'typehints_formatter'", "\x1b[91mWARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache]\x1b[39;49;00m") E + where = re.search tests/test_integration.py:1461: AssertionError --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets...  copying assets: done writing output... [100%] index build succeeded, 1 warning. The text files are in ../../../../../../../tmp/pytest-of-buildozer/pytest-126/integration/_build/text. # warning: WARNING: cannot cache unpickleable configuration value: 'typehints_formatter' (because it contains a function, class, or module object) [config.cache] _______________________ test_integration[default_conf-g] _______________________ app = status = <_io.StringIO object at 0x3ff7e304c40> warning = <_io.StringIO object at 0x3ff7e306c80> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7df23110> val = , conf_run = 'default_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", list(configs.keys())) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: template = ".. autofunction:: mod.{}" (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) app.build() assert "build succeeded" in status.getvalue() # Build succeeded regexp = getattr(val, "WARNING", None) value = warning.getvalue().strip() if regexp: msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" assert re.search(regexp, value), msg elif not re.search(r"WARNING: Inline strong start-string without end-string.", value): assert not value result = (Path(app.srcdir) / "_build/text/index.txt").read_text() expected = val.EXPECTED try: > assert result.strip() == dedent(expected).strip() E assert 'mod.g(s)\n\n...ass Alias"\')' == 'mod.g(s)\n\n..."Class Alias"' E E Skipping 46 identical leading characters in diff, use -v to show E - **s** ("Class Alias") -- Some schema. E + **s** (TypeAliasForwardRef('"Class Alias"')) -- Some schema. E ? +++++++++++++++++++++ + + E E Return type: E - "Class Alias" E + TypeAliasForwardRef('"Class Alias"') tests/test_integration_autodoc_type_aliases.py:161: AssertionError ----------------------------- Captured stdout call ----------------------------- @expected( """ mod.g(s) Do something. Parameters: **s** (TypeAliasForwardRef('"Class Alias"')) -- Some schema. Return type: TypeAliasForwardRef('"Class Alias"') """ ) --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets...  copying assets: done writing output... [100%] index build succeeded. The text files are in ../../../../../../../tmp/pytest-of-buildozer/pytest-126/integration/_build/text. # warning: ___________________ test_integration[default_conf-function] ____________________ app = status = <_io.StringIO object at 0x3ff7e3056c0> warning = <_io.StringIO object at 0x3ff7e307640> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x3ff7df97320> val = , conf_run = 'default_conf' @pytest.mark.parametrize("val", [x for x in globals().values() if hasattr(x, "EXPECTED")]) @pytest.mark.parametrize("conf_run", list(configs.keys())) @pytest.mark.sphinx("text", testroot="integration") def test_integration( app: SphinxTestApp, status: StringIO, warning: StringIO, monkeypatch: pytest.MonkeyPatch, val: Any, conf_run: str ) -> None: template = ".. autofunction:: mod.{}" (Path(app.srcdir) / "index.rst").write_text(template.format(val.__name__)) app.config.__dict__.update(configs[conf_run]) app.config.__dict__.update(val.OPTIONS) monkeypatch.setitem(sys.modules, "mod", sys.modules[__name__]) app.build() assert "build succeeded" in status.getvalue() # Build succeeded regexp = getattr(val, "WARNING", None) value = warning.getvalue().strip() if regexp: msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" assert re.search(regexp, value), msg elif not re.search(r"WARNING: Inline strong start-string without end-string.", value): assert not value result = (Path(app.srcdir) / "_build/text/index.txt").read_text() expected = val.EXPECTED try: > assert result.strip() == dedent(expected).strip() E assert 'mod.function...\n bytes' == 'mod.function...\n bytes' E E Skipping 64 identical leading characters in diff, use -v to show E - * **x** (Array) -- foo E + * **x** (TypeAliasForwardRef('Array')) -- foo E E * **y** ("Schema") -- boo E ... E E ...Full output truncated (5 lines hidden), use '-vv' to show tests/test_integration_autodoc_type_aliases.py:161: AssertionError ----------------------------- Captured stdout call ----------------------------- @expected( """ mod.function(x, y) Function docstring. Parameters: * **x** (TypeAliasForwardRef('Array')) -- foo * **y** ("Schema") -- boo Returns: something Return type: bytes """ ) --------------------------- Captured stdout teardown --------------------------- # testroot: root # builder: text # srcdir: /tmp/pytest-of-buildozer/pytest-126/integration # outdir: /tmp/pytest-of-buildozer/pytest-126/integration/_build/text # status: Running Sphinx v8.2.3 loading translations [en]... done building [mo]: targets for 0 po files that are out of date writing output...  building [text]: targets for 0 source files that are out of date updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets...  copying assets: done writing output... [100%] index build succeeded. The text files are in ../../../../../../../tmp/pytest-of-buildozer/pytest-126/integration/_build/text. # warning: =========================== short test summary info ============================ FAILED tests/test_integration.py::test_integration[default_conf-TestClassAttributeDocs] FAILED tests/test_integration.py::test_integration[default_conf-ParamAndAttributeHaveSameName] FAILED tests/test_integration.py::test_integration[default_conf-typehints_formatter_applied_to_signature] FAILED tests/test_integration.py::test_integration[prolog_conf-TestClassAttributeDocs] FAILED tests/test_integration.py::test_integration[prolog_conf-ParamAndAttributeHaveSameName] FAILED tests/test_integration.py::test_integration[prolog_conf-typehints_formatter_applied_to_signature] FAILED tests/test_integration.py::test_integration[epilog_conf-TestClassAttributeDocs] FAILED tests/test_integration.py::test_integration[epilog_conf-ParamAndAttributeHaveSameName] FAILED tests/test_integration.py::test_integration[epilog_conf-typehints_formatter_applied_to_signature] FAILED tests/test_integration.py::test_integration[bothlog_conf-TestClassAttributeDocs] FAILED tests/test_integration.py::test_integration[bothlog_conf-ParamAndAttributeHaveSameName] FAILED tests/test_integration.py::test_integration[bothlog_conf-typehints_formatter_applied_to_signature] FAILED tests/test_integration_autodoc_type_aliases.py::test_integration[default_conf-g] FAILED tests/test_integration_autodoc_type_aliases.py::test_integration[default_conf-function] ======================= 14 failed, 313 passed in 19.40s ======================== >>> ERROR: py3-sphinx-autodoc-typehints: check failed >>> py3-sphinx-autodoc-typehints: Uninstalling dependencies... (1/106) Purging .makedepends-py3-sphinx-autodoc-typehints (20250503.053055) (2/106) Purging py3-sphinx-pyc (8.2.3-r1) (3/106) Purging py3-sphinx (8.2.3-r1) (4/106) Purging py3-babel-pyc (2.17.0-r0) (5/106) Purging py3-babel (2.17.0-r0) (6/106) Purging py3-tz-pyc (2025.2-r0) (7/106) Purging py3-tz (2025.2-r0) (8/106) Purging py3-docutils-pyc (0.21.2-r0) (9/106) Purging py3-docutils (0.21.2-r0) (10/106) Purging py3-imagesize-pyc (1.4.1-r4) (11/106) Purging py3-imagesize (1.4.1-r4) (12/106) Purging py3-jinja2-pyc (3.1.6-r0) (13/106) Purging py3-jinja2 (3.1.6-r0) (14/106) Purging py3-markupsafe-pyc (3.0.2-r0) (15/106) Purging py3-markupsafe (3.0.2-r0) (16/106) Purging py3-pygments-pyc (2.19.1-r1) (17/106) Purging py3-pygments (2.19.1-r1) (18/106) Purging py3-requests-pyc (2.32.3-r0) (19/106) Purging py3-requests (2.32.3-r0) (20/106) Purging py3-charset-normalizer-pyc (3.4.1-r0) (21/106) Purging py3-charset-normalizer (3.4.1-r0) (22/106) Purging py3-idna-pyc (3.10-r0) (23/106) Purging py3-idna (3.10-r0) (24/106) Purging py3-urllib3-pyc (1.26.20-r0) (25/106) Purging py3-urllib3 (1.26.20-r0) (26/106) Purging py3-snowballstemmer-pyc (2.2.0-r5) (27/106) Purging py3-snowballstemmer (2.2.0-r5) (28/106) Purging py3-alabaster-pyc (1.0.0-r0) (29/106) Purging py3-alabaster (1.0.0-r0) (30/106) Purging py3-roman-numerals-pyc (3.1.0-r0) (31/106) Purging py3-roman-numerals (3.1.0-r0) (32/106) Purging py3-sphinxcontrib-applehelp-pyc (1.0.4-r3) (33/106) Purging py3-sphinxcontrib-applehelp (1.0.4-r3) (34/106) Purging py3-sphinxcontrib-devhelp-pyc (1.0.5-r2) (35/106) Purging py3-sphinxcontrib-devhelp (1.0.5-r2) (36/106) Purging py3-sphinxcontrib-htmlhelp-pyc (2.0.1-r3) (37/106) Purging py3-sphinxcontrib-htmlhelp (2.0.1-r3) (38/106) Purging py3-sphinxcontrib-jsmath-pyc (1.0.1-r8) (39/106) Purging py3-sphinxcontrib-jsmath (1.0.1-r8) (40/106) Purging py3-sphinxcontrib-serializinghtml-pyc (1.1.9-r2) (41/106) Purging py3-sphinxcontrib-serializinghtml (1.1.9-r2) (42/106) Purging py3-sphinxcontrib-qthelp-pyc (2.0.0-r0) (43/106) Purging py3-sphinxcontrib-qthelp (2.0.0-r0) (44/106) Purging py3-gpep517-pyc (16-r0) (45/106) Purging py3-gpep517 (16-r0) (46/106) Purging py3-installer-pyc (0.7.0-r2) (47/106) Purging py3-installer (0.7.0-r2) (48/106) Purging py3-hatch-vcs-pyc (0.4.0-r2) (49/106) Purging py3-hatch-vcs (0.4.0-r2) (50/106) Purging py3-hatchling-pyc (1.27.0-r0) (51/106) Purging py3-hatchling (1.27.0-r0) (52/106) Purging py3-editables-pyc (0.5-r2) (53/106) Purging py3-editables (0.5-r2) (54/106) Purging py3-pathspec-pyc (0.12.1-r2) (55/106) Purging py3-pathspec (0.12.1-r2) (56/106) Purging py3-trove-classifiers-pyc (2025.1.15.22-r0) (57/106) Purging py3-trove-classifiers (2025.1.15.22-r0) (58/106) Purging py3-setuptools_scm-pyc (8.2.0-r0) (59/106) Purging py3-setuptools_scm (8.2.0-r0) (60/106) Purging py3-setuptools-pyc (77.0.3-r0) (61/106) Purging py3-setuptools (77.0.3-r0) (62/106) Purging py3-pytest-pyc (8.3.5-r0) (63/106) Purging py3-pytest (8.3.5-r0) (64/106) Purging py3-iniconfig-pyc (2.1.0-r0) (65/106) Purging py3-iniconfig (2.1.0-r0) (66/106) Purging py3-packaging-pyc (25.0-r0) (67/106) Purging py3-packaging (25.0-r0) (68/106) Purging py3-parsing-pyc (3.2.0-r0) (69/106) Purging py3-parsing (3.2.0-r0) (70/106) Purging py3-pluggy-pyc (1.5.0-r0) (71/106) Purging py3-pluggy (1.5.0-r0) (72/106) Purging py3-py-pyc (1.11.0-r4) (73/106) Purging py3-py (1.11.0-r4) (74/106) Purging py3-sphobjinv-pyc (2.3.1.2-r0) (75/106) Purging py3-sphobjinv (2.3.1.2-r0) (76/106) Purging py3-certifi-pyc (2024.12.14-r0) (77/106) Purging py3-certifi (2024.12.14-r0) (78/106) Purging py3-jsonschema-pyc (4.23.0-r0) (79/106) Purging py3-jsonschema (4.23.0-r0) (80/106) Purging py3-jsonschema-specifications-pyc (2025.4.1-r0) (81/106) Purging py3-jsonschema-specifications (2025.4.1-r0) (82/106) Purging py3-referencing-pyc (0.36.2-r1) (83/106) Purging py3-referencing (0.36.2-r1) (84/106) Purging py3-attrs-pyc (25.3.0-r0) (85/106) Purging py3-attrs (25.3.0-r0) (86/106) Purging py3-typing-extensions-pyc (4.13.2-r0) (87/106) Purging py3-typing-extensions (4.13.2-r0) (88/106) Purging py3-rpds-py-pyc (0.22.3-r0) (89/106) Purging py3-rpds-py (0.22.3-r0) (90/106) Purging py3-fuzzywuzzy-pyc (0.18.0-r7) (91/106) Purging py3-fuzzywuzzy (0.18.0-r7) (92/106) Purging py3-levenshtein-pyc (0.27.1-r0) (93/106) Purging py3-levenshtein (0.27.1-r0) (94/106) Purging py3-rapidfuzz-pyc (3.13.0-r0) (95/106) Purging py3-rapidfuzz (3.13.0-r0) (96/106) Purging python3-pyc (3.12.10-r0) (97/106) Purging python3-pycache-pyc0 (3.12.10-r0) (98/106) Purging pyc (3.12.10-r0) (99/106) Purging python3 (3.12.10-r0) (100/106) Purging gdbm (1.24-r0) (101/106) Purging libbz2 (1.0.8-r6) (102/106) Purging libffi (3.4.8-r0) (103/106) Purging libpanelw (6.5_p20250412-r0) (104/106) Purging mpdecimal (4.0.0-r0) (105/106) Purging sqlite-libs (3.49.1-r1) (106/106) Purging xz-libs (5.8.1-r0) Executing busybox-1.37.0-r16.trigger OK: 359 MiB in 102 packages