Skip to content

Docs fail to build on Python 3.14 (ast.Constant.s no longer supported) #429

@TTsangSC

Description

@TTsangSC

docs/source/conf.py::parse_version() fails on Python 3.14 because ast.Constant nodes no longer provides the backward-compatible .s field:

Sample output
(py3.14)  $ make html
Running Sphinx v9.1.0

Configuration error!

Versions
========

* Platform:         darwin; (macOS-15.6.1-arm64-arm-64bit-Mach-O)
* Python version:   3.14.0 (CPython)
* Sphinx version:   9.1.0
* Docutils version: 0.22.4
* Jinja2 version:   3.1.6
* Pygments version: 2.19.2

Last Messages
=============

None.

Loaded Extensions
=================

None.

Traceback
=========

      File "[...]/py3.14/lib/python3.14/site-packages/sphinx/config.py", line 611, in eval_config_file
        raise ConfigError(msg % traceback.format_exc()) from exc
    sphinx.errors.ConfigError: There is a programmable error in your configuration file:
    
    Traceback (most recent call last):
      File "[...]/py3.14/lib/python3.14/site-packages/sphinx/config.py", line 596, in eval_config_file
        exec(code, namespace)  # NoQA: S102
        ~~~~^^^^^^^^^^^^^^^^^
      File "[...]/line_profiler/docs/source/conf.py", line 152, in <module>
        release = parse_version(modpath)
      File "[...]/line_profiler/docs/source/conf.py", line 139, in parse_version
        visitor.visit(pt)
        ~~~~~~~~~~~~~^^^^
      File "/opt/homebrew/Cellar/python@3.14/3.14.0_1/Frameworks/Python.framework/Versions/3.14/lib/python3.14/ast.py", line 506, in visit
        return visitor(node)
      File "/opt/homebrew/Cellar/python@3.14/3.14.0_1/Frameworks/Python.framework/Versions/3.14/lib/python3.14/ast.py", line 514, in generic_visit
        self.visit(item)
        ~~~~~~~~~~^^^^^^
      File "/opt/homebrew/Cellar/python@3.14/3.14.0_1/Frameworks/Python.framework/Versions/3.14/lib/python3.14/ast.py", line 506, in visit
        return visitor(node)
      File "[...]/line_profiler/docs/source/conf.py", line 136, in visit_Assign
        self.version = node.value.s
                       ^^^^^^^^^^^^
    AttributeError: 'Constant' object has no attribute 's'


The full traceback has been saved in:
/var/folders/5b/44kj9cdn7gngz2k1z1wxt0240000gp/T/sphinx-err-80c1sauj.log

To report this error to the developers, please open an issue at <https://github.com/sphinx-doc/sphinx/issues/>. Thanks!
Please also report this if it was a user error, so that a better error message can be provided next time.
make: *** [html] Error 2

Since we're dropping 3.8 support anyway – and even 3.8 uses ast.Constant instead of the earlier specialized ast.Str, ast.Num, etc. – I guess we can just update to .value.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions