Skip to content

Error building pytest PDF on readthedocs #13403

@nicoddemus

Description

@nicoddemus

Describe the bug

Hi everyone,

Since last week the latest and stable of the pytest docs on ReadTheDocs started failing with:

Traceback
=========

    Traceback (most recent call last):
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/cmd/build.py", line 432, in build_main
        app.build(args.force_all, args.filenames)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/application.py", line 426, in build
        self.builder.build_update()
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 372, in build_update
        self.build(['__all__'], summary=to_build, method='update')
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 454, in build
        self.write(docnames, updated_docnames, method)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 735, in write
        self.write_documents(docnames)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/builders/latex/__init__.py", line 333, in write_documents
        doctree = self.assemble_doctree(
                  ^^^^^^^^^^^^^^^^^^^^^^
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/builders/latex/__init__.py", line 406, in assemble_doctree
        self.env.resolve_references(largetree, indexfile, self)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/environment/__init__.py", line 759, in resolve_references
        self.apply_post_transforms(doctree, fromdocname)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/environment/__init__.py", line 773, in apply_post_transforms
        transformer.apply_transforms()
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/transforms/__init__.py", line 92, in apply_transforms
        super().apply_transforms()  # type: ignore[misc]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/docutils/transforms/__init__.py", line 182, in apply_transforms
        transform.apply(**kwargs)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/transforms/post_transforms/images.py", line 38, in apply
        self.handle(node)
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinx/transforms/post_transforms/images.py", line 273, in handle
        if self.convert(abs_srcpath, destpath):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/docs/checkouts/readthedocs.org/user_builds/pytest/envs/8.3.x/lib/python3.12/site-packages/sphinxcontrib/inkscapeconverter.py", line 71, in convert
        args += ['--export-filename=' + _to, _from]
                 ~~~~~~~~~~~~~~~~~~~~~^~~~~
    TypeError: can only concatenate str (not "_StrPath") to str

Raw logs

https://app.readthedocs.org/projects/pytest/builds/?version__slug=latest
https://app.readthedocs.org/projects/pytest/builds/?version__slug=8.3.x

conf.py file: https://github.com/pytest-dev/pytest/blob/main/doc/en/conf.py.

We have not noticed this sooner because the PR builds have been passing normally, which makes sense because inkscapeconverter is related to the PDF builds, which are disabled on the PR builds.

Any advice? Thanks!

How to Reproduce

Currently happening on ReadTheDocs, unsure how to reproduce this locally.

Environment Information

https://github.com/pytest-dev/pytest/blob/main/doc/en/requirements.txt
https://github.com/pytest-dev/pytest/blob/main/doc/en/broken-dep-constraints.txt

Sphinx extensions

extensions = [
    "pygments_pytest",
    "sphinx.ext.autodoc",
    "sphinx.ext.autosummary",
    "sphinx.ext.intersphinx",
    "sphinx.ext.todo",
    "sphinx.ext.viewcode",
    "sphinx_removed_in",
    "sphinxcontrib_trio",
    "sphinxcontrib.towncrier.ext",  # provides `towncrier-draft-entries` directive
    "sphinx_issues",  # implements `:issue:`, `:pr:` and other GH-related roles
]

# Building PDF docs on readthedocs requires inkscape for svg to pdf
# conversion. The relevant plugin is not useful for normal HTML builds, but
# it still raises warnings and fails CI if inkscape is not available. So
# only use the plugin if inkscape is actually available.
if shutil.which("inkscape"):
    extensions.append("sphinxcontrib.inkscapeconverter")

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions