Skip to content

Build broken on Python 3.11 due to typed_ast (via old version of mypy) #24

@micolous

Description

@micolous

Building the package on Python 3.11 appears to be broken due to typed_ast, which is a transitive dependency via mypy.

While this may be something local to my environment, typed_ast is end-of-life, and not supported on Python 3.8 and newer, so it shouldn't be expected to work: python/typed_ast#179

Upgrading to mypy = "^1.15" isn't compatible with Python 3.8, so can't be used.

Upgrading to mypy = "^1.14" is compatible with Python 3.8, and removes the dependency on typed_ast.

The new version of mypy flagged a number of typing problems with fastapi_app.py and (generated) test_fastapi_client.py. They look simple to fix, but require further changes to the generator.

Failing build log

$ poetry install
The "poetry.dev-dependencies" section is deprecated and will be removed in a future version. Use "poetry.group.dev.dependencies" instead.
Installing dependencies from lock file

Package operations: 13 installs, 0 updates, 0 removals

  - Installing typed-ast (1.4.3): Failed

PEP517 build of a dependency failed

Backend subprocess exited when trying to invoke build_wheel

    | Command '['/tmp/tmpfmf8olhj/.venv/bin/python', '~/.local/pipx/venvs/poetry/lib/python3.11/site-packages/pyproject_hooks/_in_process/_in_process.py', 'build_wheel', '/tmp/tmpu7v4lydj']' returned non-zero exit status 1.
    |
    | running bdist_wheel
    | running build
    | running build_py
    | creating build/lib.linux-aarch64-cpython-311/typed_ast
    | copying typed_ast/ast3.py -> build/lib.linux-aarch64-cpython-311/typed_ast
    | copying typed_ast/conversions.py -> build/lib.linux-aarch64-cpython-311/typed_ast
    | copying typed_ast/__init__.py -> build/lib.linux-aarch64-cpython-311/typed_ast
    | copying typed_ast/ast27.py -> build/lib.linux-aarch64-cpython-311/typed_ast
    | creating build/lib.linux-aarch64-cpython-311/typed_ast/tests
    | copying ast3/tests/test_basics.py -> build/lib.linux-aarch64-cpython-311/typed_ast/tests
    | running build_ext
    | building '_ast27' extension
    | creating build/temp.linux-aarch64-cpython-311/ast27/Custom
    | creating build/temp.linux-aarch64-cpython-311/ast27/Parser
    | creating build/temp.linux-aarch64-cpython-311/ast27/Python
    | aarch64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -Iast27/Include -I/tmp/tmpfmf8olhj/.venv/include -I/usr/include/python3.11 -c ast27/Custom/typed_ast.c -o build/temp.linux-aarch64-cpython-311/ast27/Custom/typed_ast.o
    | In file included from ast27/Custom/typed_ast.c:3:
    | ast27/Custom/../Include/compile.h:5:10: fatal error: code.h: No such file or directory
    |     5 | #include "code.h"
    |       |          ^~~~~~~~
    | compilation terminated.
    | error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1

Note: This error originates from the build backend, and is likely not a problem with poetry but one of the following issues with typed-ast (1.4.3)

  - not supporting PEP 517 builds
  - not specifying PEP 517 build requirements correctly
  - the build requirements are incompatible with your operating system or Python version
  - the build requirements are missing system dependencies (eg: compilers, libraries, headers).

You can verify this by running pip wheel --no-cache-dir --use-pep517 "typed-ast (==1.4.3)".

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