Package: src:mypy
Version: 2.4.0-3
User: [email protected]
Usertags: python3.15
Tags: patch, ftbfs, forky, sid
Severity: serious

Hi!

While rebuilding the python related packages against the Python 3.15
version we found that mypy fails to build from source [1].

This is an excerpt of the error:

______________________ testErrorCodeTypeIgnoreMisspelled2 ______________________
[gw3] linux -- Python 3.14.9 /usr/bin/python3.14
data: 
/build/reproducible-path/mypy-2.4.0/test-data/unit/check-errorcodes.test:851:
Failed: Unexpected type checker output 
(/build/reproducible-path/mypy-2.4.0/test-data/unit/check-errorcodes.test, line 
851)
----------------------------- Captured stderr call -----------------------------
Expected:
  main:1: error: Multiple type comments on the same line  [syntax]
  main:2: error: Multiple type comments on the same line  [syntax]
Actual:
␛[32m  main:1: error: Name "y" is not defined  [name-defined]␛[0m (diff)
  main:1: error: Multiple type comments on the same line  [syntax]
␛[32m  main:2: error: Name "x" already defined on line 1  [no-redef]␛[0m (diff)
␛[32m  main:2: error: Name "y" is not defined  [name-defined]␛[0m (diff)
  main:2: error: Multiple type comments on the same line  [syntax]

Alignment of first line difference:
  E: main:1: error: Multiple type comments on the same line  [syntax]
  A: main:1: error: Name "y" is not defined  [name-defined]
                    ^
Update the test output using --update-data (implies -n0; you can additionally 
use the -k selector to update only specific tests)

This was caused by a recent update done to python-ast-serialize, moving
from 0.12.1 to 0.13.1. And can be fixed by applying the upstream commit
0ff0c12: Bump ast-serialize to 0.13.0 [2].

On top of that, the latest changes done in dh-python (to avoid
installing files that shouldn't be shipped) also causes it to complain
with mypy, so that needs to be solved as well:

E: dh_python3 fs:173: Not everything in 
'debian/python3-mypy/usr/lib/python3.15/dist-packages/.mypy_cache/3.10' was 
able to be merged into 
'debian/python3-mypy/usr/lib/python3/dist-packages/.mypy_cache/3.10'.

Simply dropping those files in the execute_after_dh_auto_install is
enough to build the package with no complains.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/5178909/
[2]: 
https://github.com/python/mypy/commit/0ff0c12d49c448fd706143f9a61201154a905f62

--
"First, solve the problem. Then, write the code." -- John Johnson
Saludos /\/\ /\ >< `/
From 0ff0c12d49c448fd706143f9a61201154a905f62 Mon Sep 17 00:00:00 2001
From: Ivan Levkivskyi <[email protected]>
Date: Mon, 12 Oct 2026 19:08:18 +0100
Subject: [PATCH] Bump ast-serialize to 0.13.0 (#22186)

One test needs update because duplicate type comments are not blockers
anymore.

Origin: upstream, https://github.com/python/mypy/commit/0ff0c12d49c448fd706143f9a61201154a905f62
---
diff --git a/test-data/unit/check-errorcodes.test b/test-data/unit/check-errorcodes.test
index c3882b86d..455eb93d9 100644
--- a/test-data/unit/check-errorcodes.test
+++ b/test-data/unit/check-errorcodes.test
@@ -852,7 +852,10 @@ main:2: error: Name "y" is not defined  [name-defined]
 x = y  # type: int  # type: ignored[foo]
 x = y  # type: int  # type: ignored [foo]
 [out]
+main:1: error: Name "y" is not defined  [name-defined]
 main:1: error: Multiple type comments on the same line  [syntax]
+main:2: error: Name "x" already defined on line 1  [no-redef]
+main:2: error: Name "y" is not defined  [name-defined]
 main:2: error: Multiple type comments on the same line  [syntax]
 
 [case testErrorCode__exit__Return]
#!/usr/bin/make -f
#export DH_VERBOSE=1
export PYBUILD_DESTDIR_python3=debian/python3-mypy
export PYBUILD_NAME=mypy

include /usr/share/dpkg/default.mk
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
export DEB_CFLAGS_MAINT_APPEND += -Wno-misleading-indentation

ifneq (,$(filter $(DEB_HOST_ARCH),armel armhf mips64el hppa riscv64 mipsel 
alpha ia64 m68k powerpc sh4 sparc64 hurd-i386 i386 x32 hurd-amd64))
  export MYPYC_MULTI_FILE=1
endif
ifneq ($(filter pkg.mypy.multifile,$(DEB_BUILD_PROFILES)),)
  export MYPYC_MULTI_FILE=1
endif
export build_MYPYC_DEBUG_LEVEL=2
# Why build_MYPY* ? So we don't change how the tests work
ifneq ($(filter pkg.mypy.o1,$(DEB_BUILD_PROFILES)),)
  export build_MYPYC_OPT_LEVEL=1
else
  export build_MYPYC_OPT_LEVEL=3
endif
ifneq (,$(filter $(DEB_HOST_ARCH),hurd-i386 i386))
  export build_MYPY_USE_MYPYC=1  # https://github.com/python/mypy/issues/21040
else
  export build_MYPY_USE_MYPYC=1
endif
export TEST_MYPYC=$(build_MYPY_USE_MYPYC)
export MYPY_TEST_PREFIX=$(CURDIR)
export PYBUILD_TEST_ARGS=$(DEB_BUILD_OPTION_PARALLEL:%=-n%) \
        -o python_files=test*.py \
        -o python_classes= -o python_functions= --pyargs mypy.test mypyc.test \
        -k 'not (PEP561Suite or testIgnoreImportIfNoPython3StubAvailable or 
testNoPython3StubAvailable or testCustomTypeshedDirWithRelativePathDoesNotCrash 
or testDaemonStatusKillRestartRecheck or testOutputJsonParallel or 
testOutputJsonSyntaxErrorParallel)'
# PEP561Suite: needs internet access to pypi.org
# testIgnoreImportIfNoPython3StubAvailable: needs scribe installed (it isn't 
packaged for Debian)
# testNoPython3StubAvailable: no longer works because python3-typeshed includes 
docutils types, which it isn't expecting
# testCustomTypeshedDirWithRelativePathDoesNotCrash: fails as the 
mypy_extensions package is installed, so a different error appears
# testDaemonStatusKillRestartRecheck: fails for sbuild/unshare
# testOutputJsonParallel: flaky https://github.com/python/mypy/issues/21905
# testOutputJsonSyntaxErrorParallel: flaky 
https://github.com/python/mypy/issues/21905

%:
        dh $@  --buildsystem=pybuild

ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
manpages: debian/sphinx/mypy_options.rst debian/sphinx/stubgen_options.rst 
debian/dmypy.1 debian/mypy.1 debian/stubgen.1
else
manpages:
endif

debian/%.1: debian/sphinx/%.rst debian/sphinx/%_options.rst
        sphinx-build -N -b man debian/sphinx debian $<

# create an empty file to simplify the makefile logic
debian/sphinx/dmypy_options.rst:
        touch $@

debian/sphinx/mypy_options.rst: docs/source/command_line.rst
        sed 's,The .* command line,OPTIONS,g' $< > $@

debian/sphinx/stubgen_options.rst: docs/source/stubgen.rst
        sed -n -e '/stubgen --help/,$$ {/stubgen --help/d; p}' $< > $@

override_dh_auto_build-arch:
        MYPY_USE_MYPYC=$(build_MYPY_USE_MYPYC) \
          MYPYC_DEBUG_LEVEL=$(build_MYPYC_DEBUG_LEVEL) \
          MYPYC_OPT_LEVEL=$(build_MYPYC_OPT_LEVEL) \
          dh_auto_build

override_dh_auto_build-indep: manpages
        MYPY_USE_MYPYC=0 dh_auto_build
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
        PYTHONPATH=$(CURDIR) $(MAKE) -C docs html
        PYTHONPATH=$(CURDIR) $(MAKE) -C mypyc/doc html
        mv mypyc/doc/_build/html mypyc/doc/_build/mypyc
endif

execute_after_dh_auto_clean:
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
        $(MAKE) -C docs clean
        $(MAKE) -C mypyc/doc clean
endif

execute_after_dh_auto_install:
        dh_movefiles --package=mypy --sourcedir=debian/python3-mypy usr/bin
        rm -Rf debian/python3-mypy/usr/bin
        rm -Rf debian/python3-mypy/usr/lib/python3*/dist-packages/.mypy_cache
        find debian -name LICENSE -delete

execute_after_dh_python3:
        rm -rf debian/python3-mypy/usr/lib/python3/dist-packages/mypyc/doc/

execute_before_dh_auto_test-arch:
ifeq (,$(filter nocheck,$(DEB_BUILD_PROFILES)))
        PYBUILD_SYSTEM=custom \
                PYBUILD_TEST_ARGS="{interpreter} -m mypy \
                --config-file {dir}/mypy_self_check.ini -p mypy" dh_auto_test
        PYBUILD_SYSTEM=custom \
                PYBUILD_TEST_ARGS="{interpreter} -m mypy \
                --config-file {dir}/mypy_self_check.ini -p mypyc" dh_auto_test
        PYBUILD_SYSTEM=custom \
                PYBUILD_TEST_ARGS="{interpreter} -m mypy \
                --config-file {dir}/mypy_self_check.ini setup.py" dh_auto_test
endif

override_dh_auto_test-indep:
        echo No tests to run for the "mypy" package, only for "python3-mypy"

download_remote_intersphinx_inventories:
        curl https://monkeytype.readthedocs.io/en/latest/objects.inv -o 
debian/intersphinx/monkeytype_objects.inv

.PHONY: manpages

Attachment: signature.asc
Description: PGP signature

Reply via email to