0s autopkgtest [01:48:42]: starting date and time: 2026-02-06 01:48:42+0000 0s autopkgtest [01:48:42]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [01:48:42]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.kavvrcjn/out --timeout-copy=6000 --needs-internet=try --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:python-django --apt-upgrade python-djantic --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=python-django/3:5.2.9-0ubuntu3 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-arm64 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@sto01-arm64-33.secgroup --name adt-resolute-arm64-python-djantic-20260206-014839-juju-7f2275-prod-proposed-migration-environment-2-29f72392-37bb-497c-b5bf-c5ae14ff415c --image adt/ubuntu-resolute-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-autopkgtest-workers-arm64 -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 40s Creating nova instance adt-resolute-arm64-python-djantic-20260206-014839-juju-7f2275-prod-proposed-migration-environment-2-29f72392-37bb-497c-b5bf-c5ae14ff415c from image adt/ubuntu-resolute-arm64-server-20260205.img (UUID 88169191-3954-4b52-b471-25031b32a3a0)... 501s autopkgtest [01:57:03]: testbed dpkg architecture: arm64 502s autopkgtest [01:57:04]: testbed apt version: 3.1.14 503s autopkgtest [01:57:05]: @@@@@@@@@@@@@@@@@@@@ test bed setup 503s autopkgtest [01:57:05]: testbed release detected to be: None 504s autopkgtest [01:57:06]: updating testbed package index (apt update) 504s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 504s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 504s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 504s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 504s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1631 kB] 505s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [31.4 kB] 505s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [221 kB] 505s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [5260 B] 505s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 Packages [269 kB] 505s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 c-n-f Metadata [7344 B] 505s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/restricted arm64 Packages [52.9 kB] 505s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/restricted arm64 c-n-f Metadata [328 B] 505s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 Packages [1462 kB] 505s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 c-n-f Metadata [42.1 kB] 505s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse arm64 Packages [23.6 kB] 505s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse arm64 c-n-f Metadata [776 B] 509s Fetched 3872 kB in 1s (3918 kB/s) 509s Reading package lists... 510s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 510s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 510s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 510s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 511s Reading package lists... 511s Reading package lists... 511s Building dependency tree... 511s Reading state information... 511s Calculating upgrade... 512s The following packages will be upgraded: 512s libdrm-amdgpu1 libdrm-common libdrm2 mawk 512s 4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 512s Need to get 203 kB of archives. 512s After this operation, 0 B of additional disk space will be used. 512s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 mawk arm64 1.3.4.20260129-1 [128 kB] 512s Get:2 http://ftpmaster.internal/ubuntu resolute/main arm64 libdrm-common all 2.4.131-1 [9774 B] 512s Get:3 http://ftpmaster.internal/ubuntu resolute/main arm64 libdrm2 arm64 2.4.131-1 [42.6 kB] 512s Get:4 http://ftpmaster.internal/ubuntu resolute/main arm64 libdrm-amdgpu1 arm64 2.4.131-1 [22.6 kB] 512s dpkg-preconfigure: unable to re-open stdin: No such file or directory 512s Fetched 203 kB in 0s (12.0 MB/s) 512s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 89360 files and directories currently installed.) 512s Preparing to unpack .../mawk_1.3.4.20260129-1_arm64.deb ... 513s Unpacking mawk (1.3.4.20260129-1) over (1.3.4.20250131-2) ... 513s Preparing to unpack .../libdrm-common_2.4.131-1_all.deb ... 513s Unpacking libdrm-common (2.4.131-1) over (2.4.129-1) ... 513s Preparing to unpack .../libdrm2_2.4.131-1_arm64.deb ... 513s Unpacking libdrm2:arm64 (2.4.131-1) over (2.4.129-1) ... 513s Preparing to unpack .../libdrm-amdgpu1_2.4.131-1_arm64.deb ... 513s Unpacking libdrm-amdgpu1:arm64 (2.4.131-1) over (2.4.129-1) ... 513s Setting up mawk (1.3.4.20260129-1) ... 513s Setting up libdrm-common (2.4.131-1) ... 513s Setting up libdrm2:arm64 (2.4.131-1) ... 513s Setting up libdrm-amdgpu1:arm64 (2.4.131-1) ... 513s Processing triggers for man-db (2.13.1-1) ... 514s Processing triggers for libc-bin (2.42-2ubuntu4) ... 514s autopkgtest [01:57:16]: upgrading testbed (apt dist-upgrade and autopurge) 514s Reading package lists... 514s Building dependency tree... 514s Reading state information... 515s Calculating upgrade... 515s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 515s Reading package lists... 515s Building dependency tree... 515s Reading state information... 516s Solving dependencies... 516s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 520s autopkgtest [01:57:22]: testbed running kernel: Linux 6.18.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 12 16:41:39 UTC 2026 520s autopkgtest [01:57:22]: @@@@@@@@@@@@@@@@@@@@ apt-source python-djantic 523s Get:1 http://ftpmaster.internal/ubuntu resolute/universe python-djantic 0.7.0-6 (dsc) [2588 B] 523s Get:2 http://ftpmaster.internal/ubuntu resolute/universe python-djantic 0.7.0-6 (tar) [54.6 kB] 523s Get:3 http://ftpmaster.internal/ubuntu resolute/universe python-djantic 0.7.0-6 (diff) [4336 B] 523s gpgv: Signature made Thu Feb 20 07:32:29 2025 UTC 523s gpgv: using RSA key 8F6DE104377F3B11E741748731F3144544A1741A 523s gpgv: issuer "tchet@debian.org" 523s gpgv: Can't check signature: No public key 523s dpkg-source: warning: cannot verify inline signature for ./python-djantic_0.7.0-6.dsc: no acceptable signature found 523s autopkgtest [01:57:25]: testing package python-djantic version 0.7.0-6 523s autopkgtest [01:57:25]: build not needed 524s autopkgtest [01:57:26]: test upstream: preparing testbed 524s Reading package lists... 524s Building dependency tree... 524s Reading state information... 524s Solving dependencies... 525s The following NEW packages will be installed: 525s libdeflate0 libgomp1 libgraphite2-3 libharfbuzz0b libimagequant0 libjbig0 525s libjpeg-turbo8 libjpeg8 liblcms2-2 liblerc4 libopenjp2-7 libpq5 525s libpython3.14-minimal libpython3.14-stdlib libraqm0 libsharpyuv0 libtiff6 525s libwebp7 libwebpdemux2 libwebpmux3 python-djantic-doc python3-all 525s python3-annotated-types python3-asgiref python3-django python3-djantic 525s python3-dnspython python3-email-validator python3-factory-boy 525s python3-fake-factory python3-iniconfig python3-pil python3-pluggy 525s python3-psycopg2 python3-pydantic python3-pydantic-core python3-pytest 525s python3-pytest-django python3-sqlparse python3-typing-inspection python3.14 525s python3.14-minimal 525s 0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded. 525s Need to get 17.6 MB of archives. 525s After this operation, 91.1 MB of additional disk space will be used. 525s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 libpython3.14-minimal arm64 3.14.2-1 [917 kB] 525s Get:2 http://ftpmaster.internal/ubuntu resolute/main arm64 python3.14-minimal arm64 3.14.2-1 [2548 kB] 525s Get:3 http://ftpmaster.internal/ubuntu resolute/main arm64 libdeflate0 arm64 1.23-2 [46.4 kB] 525s Get:4 http://ftpmaster.internal/ubuntu resolute/main arm64 libgomp1 arm64 15.2.0-12ubuntu1 [147 kB] 525s Get:5 http://ftpmaster.internal/ubuntu resolute/main arm64 libgraphite2-3 arm64 1.3.14-11ubuntu1 [72.1 kB] 525s Get:6 http://ftpmaster.internal/ubuntu resolute/main arm64 libharfbuzz0b arm64 12.3.2-1 [510 kB] 525s Get:7 http://ftpmaster.internal/ubuntu resolute/main arm64 libimagequant0 arm64 2.18.0-1build1 [37.1 kB] 525s Get:8 http://ftpmaster.internal/ubuntu resolute/main arm64 libjpeg-turbo8 arm64 2.1.5-4ubuntu2 [165 kB] 525s Get:9 http://ftpmaster.internal/ubuntu resolute/main arm64 libjpeg8 arm64 8c-2ubuntu11 [2148 B] 525s Get:10 http://ftpmaster.internal/ubuntu resolute/main arm64 liblcms2-2 arm64 2.17-1 [170 kB] 525s Get:11 http://ftpmaster.internal/ubuntu resolute/main arm64 liblerc4 arm64 4.0.0+ds-5ubuntu2 [174 kB] 525s Get:12 http://ftpmaster.internal/ubuntu resolute/main arm64 libpq5 arm64 18.1-2 [151 kB] 525s Get:13 http://ftpmaster.internal/ubuntu resolute/main arm64 libpython3.14-stdlib arm64 3.14.2-1 [2351 kB] 525s Get:14 http://ftpmaster.internal/ubuntu resolute/main arm64 libraqm0 arm64 0.10.3-1 [15.0 kB] 525s Get:15 http://ftpmaster.internal/ubuntu resolute/main arm64 libsharpyuv0 arm64 1.5.0-0.1build1 [16.7 kB] 525s Get:16 http://ftpmaster.internal/ubuntu resolute/main arm64 libjbig0 arm64 2.1-6.1ubuntu3 [29.2 kB] 525s Get:17 http://ftpmaster.internal/ubuntu resolute/main arm64 libwebp7 arm64 1.5.0-0.1build1 [205 kB] 525s Get:18 http://ftpmaster.internal/ubuntu resolute/main arm64 libtiff6 arm64 4.7.0-3ubuntu3 [196 kB] 525s Get:19 http://ftpmaster.internal/ubuntu resolute/main arm64 libwebpdemux2 arm64 1.5.0-0.1build1 [12.5 kB] 525s Get:20 http://ftpmaster.internal/ubuntu resolute/main arm64 libwebpmux3 arm64 1.5.0-0.1build1 [25.2 kB] 525s Get:21 http://ftpmaster.internal/ubuntu resolute/universe arm64 python-djantic-doc all 0.7.0-6 [492 kB] 525s Get:22 http://ftpmaster.internal/ubuntu resolute/main arm64 python3.14 arm64 3.14.2-1 [816 kB] 525s Get:23 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-all arm64 3.13.9-3 [890 B] 525s Get:24 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-annotated-types all 0.7.0-1 [19.4 kB] 525s Get:25 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-asgiref all 3.11.0-1 [25.2 kB] 525s Get:26 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-sqlparse all 0.5.4-1 [34.3 kB] 525s Get:27 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 python3-django all 3:5.2.9-0ubuntu3 [3040 kB] 526s Get:28 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pydantic-core arm64 2.41.5-2 [2170 kB] 526s Get:29 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-typing-inspection all 0.4.2-1 [13.1 kB] 526s Get:30 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-dnspython all 2.7.0-1ubuntu2 [167 kB] 526s Get:31 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-email-validator all 2.2.0-1 [28.5 kB] 526s Get:32 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pydantic arm64 2.12.5-2 [312 kB] 526s Get:33 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-djantic all 0.7.0-6 [9454 B] 526s Get:34 http://ftpmaster.internal/ubuntu resolute/main arm64 libopenjp2-7 arm64 2.5.4-1 [180 kB] 526s Get:35 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-pil arm64 12.0.0-1ubuntu1 [486 kB] 526s Get:36 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-fake-factory all 39.0.0-1 [1455 kB] 526s Get:37 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-factory-boy all 3.3.3-1build1 [35.9 kB] 526s Get:38 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-iniconfig all 2.1.0-2 [6962 B] 526s Get:39 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pluggy all 1.6.0-2 [21.1 kB] 526s Get:40 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-psycopg2 arm64 2.9.11-1 [164 kB] 526s Get:41 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest all 9.0.2-2 [277 kB] 526s Get:42 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest-django all 4.11.1-2 [21.8 kB] 526s Fetched 17.6 MB in 1s (13.9 MB/s) 526s Selecting previously unselected package libpython3.14-minimal:arm64. 527s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 89360 files and directories currently installed.) 527s Preparing to unpack .../00-libpython3.14-minimal_3.14.2-1_arm64.deb ... 527s Unpacking libpython3.14-minimal:arm64 (3.14.2-1) ... 527s Selecting previously unselected package python3.14-minimal. 527s Preparing to unpack .../01-python3.14-minimal_3.14.2-1_arm64.deb ... 527s Unpacking python3.14-minimal (3.14.2-1) ... 527s Selecting previously unselected package libdeflate0:arm64. 527s Preparing to unpack .../02-libdeflate0_1.23-2_arm64.deb ... 527s Unpacking libdeflate0:arm64 (1.23-2) ... 527s Selecting previously unselected package libgomp1:arm64. 527s Preparing to unpack .../03-libgomp1_15.2.0-12ubuntu1_arm64.deb ... 527s Unpacking libgomp1:arm64 (15.2.0-12ubuntu1) ... 527s Selecting previously unselected package libgraphite2-3:arm64. 527s Preparing to unpack .../04-libgraphite2-3_1.3.14-11ubuntu1_arm64.deb ... 527s Unpacking libgraphite2-3:arm64 (1.3.14-11ubuntu1) ... 527s Selecting previously unselected package libharfbuzz0b:arm64. 527s Preparing to unpack .../05-libharfbuzz0b_12.3.2-1_arm64.deb ... 527s Unpacking libharfbuzz0b:arm64 (12.3.2-1) ... 527s Selecting previously unselected package libimagequant0:arm64. 527s Preparing to unpack .../06-libimagequant0_2.18.0-1build1_arm64.deb ... 527s Unpacking libimagequant0:arm64 (2.18.0-1build1) ... 527s Selecting previously unselected package libjpeg-turbo8:arm64. 527s Preparing to unpack .../07-libjpeg-turbo8_2.1.5-4ubuntu2_arm64.deb ... 527s Unpacking libjpeg-turbo8:arm64 (2.1.5-4ubuntu2) ... 527s Selecting previously unselected package libjpeg8:arm64. 527s Preparing to unpack .../08-libjpeg8_8c-2ubuntu11_arm64.deb ... 527s Unpacking libjpeg8:arm64 (8c-2ubuntu11) ... 527s Selecting previously unselected package liblcms2-2:arm64. 527s Preparing to unpack .../09-liblcms2-2_2.17-1_arm64.deb ... 527s Unpacking liblcms2-2:arm64 (2.17-1) ... 527s Selecting previously unselected package liblerc4:arm64. 527s Preparing to unpack .../10-liblerc4_4.0.0+ds-5ubuntu2_arm64.deb ... 527s Unpacking liblerc4:arm64 (4.0.0+ds-5ubuntu2) ... 527s Selecting previously unselected package libpq5:arm64. 527s Preparing to unpack .../11-libpq5_18.1-2_arm64.deb ... 527s Unpacking libpq5:arm64 (18.1-2) ... 527s Selecting previously unselected package libpython3.14-stdlib:arm64. 527s Preparing to unpack .../12-libpython3.14-stdlib_3.14.2-1_arm64.deb ... 527s Unpacking libpython3.14-stdlib:arm64 (3.14.2-1) ... 527s Selecting previously unselected package libraqm0:arm64. 527s Preparing to unpack .../13-libraqm0_0.10.3-1_arm64.deb ... 527s Unpacking libraqm0:arm64 (0.10.3-1) ... 527s Selecting previously unselected package libsharpyuv0:arm64. 527s Preparing to unpack .../14-libsharpyuv0_1.5.0-0.1build1_arm64.deb ... 527s Unpacking libsharpyuv0:arm64 (1.5.0-0.1build1) ... 527s Selecting previously unselected package libjbig0:arm64. 527s Preparing to unpack .../15-libjbig0_2.1-6.1ubuntu3_arm64.deb ... 527s Unpacking libjbig0:arm64 (2.1-6.1ubuntu3) ... 527s Selecting previously unselected package libwebp7:arm64. 527s Preparing to unpack .../16-libwebp7_1.5.0-0.1build1_arm64.deb ... 527s Unpacking libwebp7:arm64 (1.5.0-0.1build1) ... 527s Selecting previously unselected package libtiff6:arm64. 527s Preparing to unpack .../17-libtiff6_4.7.0-3ubuntu3_arm64.deb ... 527s Unpacking libtiff6:arm64 (4.7.0-3ubuntu3) ... 527s Selecting previously unselected package libwebpdemux2:arm64. 527s Preparing to unpack .../18-libwebpdemux2_1.5.0-0.1build1_arm64.deb ... 527s Unpacking libwebpdemux2:arm64 (1.5.0-0.1build1) ... 527s Selecting previously unselected package libwebpmux3:arm64. 527s Preparing to unpack .../19-libwebpmux3_1.5.0-0.1build1_arm64.deb ... 527s Unpacking libwebpmux3:arm64 (1.5.0-0.1build1) ... 527s Selecting previously unselected package python-djantic-doc. 527s Preparing to unpack .../20-python-djantic-doc_0.7.0-6_all.deb ... 527s Unpacking python-djantic-doc (0.7.0-6) ... 527s Selecting previously unselected package python3.14. 527s Preparing to unpack .../21-python3.14_3.14.2-1_arm64.deb ... 527s Unpacking python3.14 (3.14.2-1) ... 527s Selecting previously unselected package python3-all. 527s Preparing to unpack .../22-python3-all_3.13.9-3_arm64.deb ... 527s Unpacking python3-all (3.13.9-3) ... 527s Selecting previously unselected package python3-annotated-types. 527s Preparing to unpack .../23-python3-annotated-types_0.7.0-1_all.deb ... 527s Unpacking python3-annotated-types (0.7.0-1) ... 527s Selecting previously unselected package python3-asgiref. 527s Preparing to unpack .../24-python3-asgiref_3.11.0-1_all.deb ... 527s Unpacking python3-asgiref (3.11.0-1) ... 528s Selecting previously unselected package python3-sqlparse. 528s Preparing to unpack .../25-python3-sqlparse_0.5.4-1_all.deb ... 528s Unpacking python3-sqlparse (0.5.4-1) ... 528s Selecting previously unselected package python3-django. 528s Preparing to unpack .../26-python3-django_3%3a5.2.9-0ubuntu3_all.deb ... 528s Unpacking python3-django (3:5.2.9-0ubuntu3) ... 528s Selecting previously unselected package python3-pydantic-core. 528s Preparing to unpack .../27-python3-pydantic-core_2.41.5-2_arm64.deb ... 528s Unpacking python3-pydantic-core (2.41.5-2) ... 528s Selecting previously unselected package python3-typing-inspection. 528s Preparing to unpack .../28-python3-typing-inspection_0.4.2-1_all.deb ... 528s Unpacking python3-typing-inspection (0.4.2-1) ... 528s Selecting previously unselected package python3-dnspython. 528s Preparing to unpack .../29-python3-dnspython_2.7.0-1ubuntu2_all.deb ... 528s Unpacking python3-dnspython (2.7.0-1ubuntu2) ... 528s Selecting previously unselected package python3-email-validator. 528s Preparing to unpack .../30-python3-email-validator_2.2.0-1_all.deb ... 528s Unpacking python3-email-validator (2.2.0-1) ... 528s Selecting previously unselected package python3-pydantic. 528s Preparing to unpack .../31-python3-pydantic_2.12.5-2_arm64.deb ... 528s Unpacking python3-pydantic (2.12.5-2) ... 528s Selecting previously unselected package python3-djantic. 528s Preparing to unpack .../32-python3-djantic_0.7.0-6_all.deb ... 528s Unpacking python3-djantic (0.7.0-6) ... 528s Selecting previously unselected package libopenjp2-7:arm64. 528s Preparing to unpack .../33-libopenjp2-7_2.5.4-1_arm64.deb ... 528s Unpacking libopenjp2-7:arm64 (2.5.4-1) ... 528s Selecting previously unselected package python3-pil:arm64. 528s Preparing to unpack .../34-python3-pil_12.0.0-1ubuntu1_arm64.deb ... 528s Unpacking python3-pil:arm64 (12.0.0-1ubuntu1) ... 528s Selecting previously unselected package python3-fake-factory. 528s Preparing to unpack .../35-python3-fake-factory_39.0.0-1_all.deb ... 528s Unpacking python3-fake-factory (39.0.0-1) ... 528s Selecting previously unselected package python3-factory-boy. 528s Preparing to unpack .../36-python3-factory-boy_3.3.3-1build1_all.deb ... 528s Unpacking python3-factory-boy (3.3.3-1build1) ... 529s Selecting previously unselected package python3-iniconfig. 529s Preparing to unpack .../37-python3-iniconfig_2.1.0-2_all.deb ... 529s Unpacking python3-iniconfig (2.1.0-2) ... 529s Selecting previously unselected package python3-pluggy. 529s Preparing to unpack .../38-python3-pluggy_1.6.0-2_all.deb ... 529s Unpacking python3-pluggy (1.6.0-2) ... 529s Selecting previously unselected package python3-psycopg2. 529s Preparing to unpack .../39-python3-psycopg2_2.9.11-1_arm64.deb ... 529s Unpacking python3-psycopg2 (2.9.11-1) ... 529s Selecting previously unselected package python3-pytest. 529s Preparing to unpack .../40-python3-pytest_9.0.2-2_all.deb ... 529s Unpacking python3-pytest (9.0.2-2) ... 529s Selecting previously unselected package python3-pytest-django. 529s Preparing to unpack .../41-python3-pytest-django_4.11.1-2_all.deb ... 529s Unpacking python3-pytest-django (4.11.1-2) ... 529s Setting up libgraphite2-3:arm64 (1.3.14-11ubuntu1) ... 529s Setting up liblcms2-2:arm64 (2.17-1) ... 529s Setting up python3-iniconfig (2.1.0-2) ... 529s Setting up libsharpyuv0:arm64 (1.5.0-0.1build1) ... 529s Setting up python3-pydantic-core (2.41.5-2) ... 529s Setting up liblerc4:arm64 (4.0.0+ds-5ubuntu2) ... 529s Setting up python3-typing-inspection (0.4.2-1) ... 529s Setting up libpython3.14-minimal:arm64 (3.14.2-1) ... 529s Setting up python-djantic-doc (0.7.0-6) ... 529s Setting up libpq5:arm64 (18.1-2) ... 529s Setting up libdeflate0:arm64 (1.23-2) ... 529s Setting up libgomp1:arm64 (15.2.0-12ubuntu1) ... 529s Setting up libjbig0:arm64 (2.1-6.1ubuntu3) ... 529s Setting up python3-annotated-types (0.7.0-1) ... 530s Setting up python3-sqlparse (0.5.4-1) ... 530s Setting up libimagequant0:arm64 (2.18.0-1build1) ... 530s Setting up python3-psycopg2 (2.9.11-1) ... 530s Setting up libjpeg-turbo8:arm64 (2.1.5-4ubuntu2) ... 530s Setting up python3-pluggy (1.6.0-2) ... 530s Setting up libwebp7:arm64 (1.5.0-0.1build1) ... 530s Setting up python3-dnspython (2.7.0-1ubuntu2) ... 531s Setting up libopenjp2-7:arm64 (2.5.4-1) ... 531s Setting up libharfbuzz0b:arm64 (12.3.2-1) ... 531s Setting up python3-email-validator (2.2.0-1) ... 531s Setting up libwebpmux3:arm64 (1.5.0-0.1build1) ... 531s Setting up python3.14-minimal (3.14.2-1) ... 532s Setting up python3-asgiref (3.11.0-1) ... 532s Setting up libjpeg8:arm64 (8c-2ubuntu11) ... 532s Setting up python3-django (3:5.2.9-0ubuntu3) ... 535s Setting up libpython3.14-stdlib:arm64 (3.14.2-1) ... 535s Setting up python3-pytest (9.0.2-2) ... 535s Setting up libwebpdemux2:arm64 (1.5.0-0.1build1) ... 535s Setting up python3-pytest-django (4.11.1-2) ... 536s Setting up python3-pydantic (2.12.5-2) ... 536s Setting up libraqm0:arm64 (0.10.3-1) ... 536s Setting up libtiff6:arm64 (4.7.0-3ubuntu3) ... 536s Setting up python3-djantic (0.7.0-6) ... 537s Setting up python3.14 (3.14.2-1) ... 538s Setting up python3-all (3.13.9-3) ... 538s Setting up python3-pil:arm64 (12.0.0-1ubuntu1) ... 538s Setting up python3-fake-factory (39.0.0-1) ... 541s Setting up python3-factory-boy (3.3.3-1build1) ... 541s Processing triggers for systemd (259-1ubuntu3) ... 541s Processing triggers for man-db (2.13.1-1) ... 542s Processing triggers for libc-bin (2.42-2ubuntu4) ... 547s autopkgtest [01:57:49]: test upstream: [----------------------- 548s ============================= test session starts ============================== 548s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14 548s cachedir: .pytest_cache 548s django: version: 5.2.9, settings: tests.testapp.settings (from ini) 548s rootdir: /tmp/autopkgtest.FmKDyI/autopkgtest_tmp 548s configfile: setup.cfg 548s plugins: typeguard-4.4.4, django-4.11.1, Faker-39.0.0 548s collecting ... collected 32 items / 4 deselected / 28 selected 548s 548s tests/test_fields.py::test_unhandled_field_type Creating test database for alias 'default'... 549s is currently unhandled, defaulting to str. 549s PASSED 549s tests/test_fields.py::test_custom_field PASSED 549s tests/test_fields.py::test_postgres_json_field PASSED 549s tests/test_fields.py::test_lazy_choice_field PASSED 549s tests/test_fields.py::test_enum_choices PASSED 549s tests/test_fields.py::test_enum_choices_generates_unique_enums PASSED 549s tests/test_fields.py::test_listing PASSED 549s tests/test_files.py::test_image_field_schema PASSED 549s tests/test_main.py::test_config_errors PASSED 549s tests/test_main.py::test_get_field_names PASSED 549s tests/test_queries.py::test_get_instance PASSED 549s tests/test_queries.py::test_get_instance_with_generic_foreign_key FAILED 549s tests/test_queries.py::test_get_queryset_with_reverse_one_to_one FAILED 549s tests/test_queries.py::test_get_queryset_with_foreign_key FAILED 549s tests/test_queries.py::test_get_queryset_with_reverse_foreign_key FAILED 549s tests/test_queries.py::test_get_queryset_with_generic_foreign_key PASSED 549s tests/test_relations.py::test_m2m FAILED 549s tests/test_relations.py::test_foreign_key FAILED 549s tests/test_relations.py::test_one_to_one FAILED 549s tests/test_relations.py::test_one_to_one_reverse FAILED 549s tests/test_relations.py::test_generic_relation FAILED 549s tests/test_relations.py::test_m2m_reverse FAILED 549s tests/test_schemas.py::test_description PASSED 549s tests/test_schemas.py::test_cache PASSED 549s tests/test_schemas.py::test_include_exclude PASSED 549s tests/test_schemas.py::test_json PASSED 549s tests/test_schemas.py::test_include_from_annotations FAILED 549s tests/test_schemas.py::test_by_alias_generator PASSEDDestroying test database for alias 'default'... 549s 549s 549s =================================== FAILURES =================================== 549s __________________ test_get_instance_with_generic_foreign_key __________________ 549s 549s @pytest.mark.django_db 549s def test_get_instance_with_generic_foreign_key(): 549s 549s bookmark = Bookmark.objects.create(url="https://www.djangoproject.com/") 549s Tagged.objects.create(content_object=bookmark, slug="django") 549s 549s class TaggedSchema(ModelSchema): 549s class Config: 549s model = Tagged 549s 549s class BookmarkWithTaggedSchema(ModelSchema): 549s 549s tags: List[TaggedSchema] 549s 549s class Config: 549s model = Bookmark 549s 549s bookmark_with_tagged_schema = BookmarkWithTaggedSchema.from_django(bookmark) 549s 549s > assert bookmark_with_tagged_schema.dict() == { 549s "id": 1, 549s "tags": [ 549s { 549s 'content_object': 1, 549s "content_type": 20, 549s "id": 1, 549s "object_id": 1, 549s "slug": "django", 549s } 549s ], 549s "url": "https://www.djangoproject.com/", 549s } 549s E AssertionError: assert {'id': 1, 'ta...project.com/'} == {'id': 1, 'ta...project.com/'} 549s E 549s E Omitting 2 identical items, use -vv to show 549s E Differing items: 549s E {'tags': [{'id': 1}]} != {'tags': [{'content_object': 1, 'content_type': 20, 'id': 1, 'object_id': 1, ...}]} 549s E 549s E Full diff: 549s E {... 549s E 549s E ...Full output truncated (12 lines hidden), use '-vv' to show 549s 549s tests/test_queries.py:46: AssertionError 549s __________________ test_get_queryset_with_reverse_one_to_one ___________________ 549s 549s @pytest.mark.django_db 549s def test_get_queryset_with_reverse_one_to_one(): 549s """ 549s Test retrieving a Django queryset with reverse one-to-one relationships. 549s """ 549s user_data = [ 549s {"first_name": "Jordan", "email": "jordan@eremieff.com"}, 549s {"first_name": "Sara", "email": "sara@example.com"}, 549s ] 549s for kwargs in user_data: 549s user = User.objects.create(**kwargs) 549s Profile.objects.create(user=user, location="Australia") 549s 549s class UserSchema(ModelSchema): 549s class Config: 549s model = User 549s include = ["id", "email", "first_name", "profile"] 549s 549s users = User.objects.all() 549s user_schema_qs = UserSchema.from_django(users, many=True) 549s assert user_schema_qs == [ 549s { 549s "email": "jordan@eremieff.com", 549s "first_name": "Jordan", 549s "id": 1, 549s "profile": 1, 549s }, 549s {"email": "sara@example.com", "first_name": "Sara", "id": 2, "profile": 2}, 549s ] 549s 549s # Test when using a declared sub-model 549s class ProfileSchema(ModelSchema): 549s class Config: 549s model = Profile 549s include = ["id", "location"] 549s 549s class UserWithProfileSchema(ModelSchema): 549s 549s profile: ProfileSchema 549s 549s class Config: 549s model = User 549s exclude = ["created_at", "updated_at", "last_name"] 549s 549s users = User.objects.all() 549s 549s user_with_profile_schema_qs = UserWithProfileSchema.from_django(users, many=True) 549s > assert user_with_profile_schema_qs == [ 549s { 549s "email": "jordan@eremieff.com", 549s "first_name": "Jordan", 549s "id": 1, 549s "profile": {"id": 1, "location": "Australia"}, 549s }, 549s { 549s "email": "sara@example.com", 549s "first_name": "Sara", 549s "id": 2, 549s "profile": {"id": 2, "location": "Australia"}, 549s }, 549s ] 549s E AssertionError: assert [UserWithProf...example.com')] == [{'email': 'j...'Australia'}}] 549s E 549s E At index 0 diff: UserWithProfileSchema(profile=1, id=1, first_name='Jordan', email='jordan@eremieff.com') != {'email': 'jordan@eremieff.com', 'first_name': 'Jordan', 'id': 1, 'profile': {'id': 1, 'location': 'Australia'}} 549s E 549s E Full diff: 549s E [ 549s E + UserWithProfileSchema(profile=1, id=1, first_name='Jordan', email='jordan@eremieff.com'), 549s E + UserWithProfileSchema(profile=2, id=2, first_name='Sara', email='sara@example.com'),... 549s E 549s E ...Full output truncated (19 lines hidden), use '-vv' to show 549s 549s tests/test_queries.py:108: AssertionError 549s ______________________ test_get_queryset_with_foreign_key ______________________ 549s 549s @pytest.mark.django_db 549s def test_get_queryset_with_foreign_key(): 549s """ 549s Test retrieving a Django queryset with foreign-key relationships. 549s """ 549s 549s thread = Thread.objects.create(title="My thread topic") 549s thread2 = Thread.objects.create(title="Another topic") 549s for content in ("I agree.", "I disagree!", "lol"): 549s message_one = Message.objects.create(content=content, thread=thread) 549s Message.objects.create(content=content, thread=thread2) 549s 549s class MessageSchema(ModelSchema): 549s class Config: 549s model = Message 549s exclude = ["created_at"] 549s 549s schema = MessageSchema.from_django(message_one) 549s assert schema.dict() == {"id": 5, "content": "lol", "thread": 1} 549s 549s class ThreadSchema(ModelSchema): 549s class Config: 549s model = Thread 549s exclude = ["created_at"] 549s 549s class MessageWithThreadSchema(ModelSchema): 549s thread: ThreadSchema 549s 549s class Config: 549s model = Message 549s exclude = ["created_at"] 549s 549s schema = MessageWithThreadSchema.from_django(message_one) 549s > assert schema.dict() == { 549s "id": 5, 549s "content": "lol", 549s "thread": { 549s "messages": [{"id": 1}, {"id": 3}, {"id": 5}], 549s "id": 1, 549s "title": "My thread topic", 549s }, 549s } 549s E AssertionError: assert {'content': '..., 'thread': 1} == {'content': '...hread topic'}} 549s E 549s E Omitting 2 identical items, use -vv to show 549s E Differing items: 549s E {'thread': 1} != {'thread': {'id': 1, 'messages': [{'id': 1}, {'id': 3}, {'id': 5}], 'title': 'My thread topic'}} 549s E 549s E Full diff: 549s E {... 549s E 549s E ...Full output truncated (21 lines hidden), use '-vv' to show 549s 549s tests/test_queries.py:157: AssertionError 549s __________________ test_get_queryset_with_reverse_foreign_key __________________ 549s 549s @pytest.mark.django_db 549s def test_get_queryset_with_reverse_foreign_key(): 549s """ 549s Test retrieving a Django queryset with reverse foreign-key relationships. 549s """ 549s 549s thread = Thread.objects.create(title="My thread topic") 549s thread2 = Thread.objects.create(title="Another topic") 549s for content in ("I agree.", "I disagree!", "lol"): 549s Message.objects.create(content=content, thread=thread) 549s Message.objects.create(content=content, thread=thread2) 549s 549s threads = Thread.objects.all() 549s 549s class MessageSchema(ModelSchema): 549s class Config: 549s model = Message 549s include = ["id", "content"] 549s 549s class ThreadSchema(ModelSchema): 549s class Config: 549s model = Thread 549s 549s thread_schema_qs = ThreadSchema.from_django(threads, many=True) 549s thread_schemas = [t.dict() for t in thread_schema_qs] 549s assert thread_schemas == [ 549s { 549s "messages": [{"id": 2}, {"id": 4}, {"id": 6}], 549s "id": 2, 549s "title": "Another topic", 549s }, 549s { 549s "messages": [{"id": 1}, {"id": 3}, {"id": 5}], 549s "id": 1, 549s "title": "My thread topic", 549s }, 549s ] 549s 549s # Test when using a declared sub-model 549s class ThreadWithMessageListSchema(ModelSchema): 549s messages: List[MessageSchema] 549s 549s class Config: 549s model = Thread 549s exclude = ["created_at", "updated_at"] 549s 549s thread_with_message_list_schema_qs = ThreadWithMessageListSchema.from_django( 549s threads, many=True 549s ) 549s 549s > assert thread_with_message_list_schema_qs == [ 549s { 549s "messages": [ 549s {"id": 2, "content": "I agree."}, 549s {"id": 4, "content": "I disagree!"}, 549s {"id": 6, "content": "lol"}, 549s ], 549s "id": 2, 549s "title": "Another topic", 549s }, 549s { 549s "messages": [ 549s {"id": 1, "content": "I agree."}, 549s {"id": 3, "content": "I disagree!"}, 549s {"id": 5, "content": "lol"}, 549s ], 549s "id": 1, 549s "title": "My thread topic", 549s }, 549s ] 549s E AssertionError: assert [ThreadWithMe...hread topic')] == [{'id': 2, 'm...hread topic'}] 549s E 549s E At index 0 diff: ThreadWithMessageListSchema(messages=[{'id': 2}, {'id': 4}, {'id': 6}], id=2, title='Another topic') != {'messages': [{'id': 2, 'content': 'I agree.'}, {'id': 4, 'content': 'I disagree!'}, {'id': 6, 'content': 'lol'}], 'id': 2, 'title': 'Another topic'} 549s E 549s E Full diff: 549s E [ 549s E + ThreadWithMessageListSchema(messages=[{'id': 2}, {'id': 4}, {'id': 6}], id=2, title='Another topic'), 549s E + ThreadWithMessageListSchema(messages=[{'id': 1}, {'id': 3}, {'id': 5}], id=1, title='My thread topic'),... 549s E 549s E ...Full output truncated (37 lines hidden), use '-vv' to show 549s 549s tests/test_queries.py:218: AssertionError 549s ___________________________________ test_m2m ___________________________________ 549s 549s @pytest.mark.django_db 549s def test_m2m(): 549s """ 549s Test forward m2m relationships. 549s """ 549s 549s class ArticleSchema(ModelSchema): 549s class Config: 549s model = Article 549s 549s assert ArticleSchema.schema() == { 549s "title": "ArticleSchema", 549s "description": "A news article.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "headline": { 549s "title": "Headline", 549s "description": "headline", 549s "maxLength": 100, 549s "type": "string", 549s }, 549s "pub_date": { 549s "title": "Pub Date", 549s "description": "pub_date", 549s "type": "string", 549s "format": "date", 549s }, 549s "publications": { 549s "title": "Publications", 549s "description": "id", 549s "type": "array", 549s "items": { 549s "type": "object", 549s "additionalProperties": {"type": "integer"}, 549s }, 549s }, 549s }, 549s "required": ["headline", "pub_date", "publications"], 549s } 549s 549s class PublicationSchema(ModelSchema): 549s class Config: 549s model = Publication 549s 549s class ArticleWithPublicationListSchema(ModelSchema): 549s publications: List[PublicationSchema] 549s 549s class Config: 549s model = Article 549s 549s > assert ArticleWithPublicationListSchema.schema() == { 549s "title": "ArticleWithPublicationListSchema", 549s "description": "A news article.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "headline": { 549s "title": "Headline", 549s "description": "headline", 549s "maxLength": 100, 549s "type": "string", 549s }, 549s "pub_date": { 549s "title": "Pub Date", 549s "description": "pub_date", 549s "type": "string", 549s "format": "date", 549s }, 549s "publications": { 549s "title": "Publications", 549s "type": "array", 549s "items": {"$ref": "#/definitions/PublicationSchema"}, 549s }, 549s }, 549s "required": ["headline", "pub_date", "publications"], 549s "definitions": { 549s "PublicationSchema": { 549s "title": "PublicationSchema", 549s "description": "A news publication.", 549s "type": "object", 549s "properties": { 549s "article_set": { 549s "title": "Article Set", 549s "description": "id", 549s "type": "array", 549s "items": { 549s "type": "object", 549s "additionalProperties": {"type": "integer"}, 549s }, 549s }, 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "title": { 549s "title": "Title", 549s "description": "title", 549s "maxLength": 30, 549s "type": "string", 549s }, 549s }, 549s "required": ["title"], 549s } 549s }, 549s } 549s E AssertionError: assert {'description...tSchema', ...} == {'definitions...ations'], ...} 549s E 549s E Omitting 4 identical items, use -vv to show 549s E Differing items: 549s E {'properties': {'headline': {'description': 'headline', 'maxLength': 100, 'title': 'Headline', 'type': 'string'}, 'id'..., 'items': {'additionalProperties': {'type': 'integer'}, 'type': 'object'}, 'title': 'Publications', 'type': 'array'}}} != {'properties': {'headline': {'description': 'headline', 'maxLength': 100, 'title': 'Headline', 'type': 'string'}, 'id'...g'}, 'publications': {'items': {'$ref': '#/definitions/PublicationSchema'}, 'title': 'Publications', 'type': 'array'}}} 549s E Right contains 1 more item: 549s E {'defi... 549s E 549s E ...Full output truncated (94 lines hidden), use '-vv' to show 549s 549s tests/test_relations.py:74: AssertionError 549s _______________________________ test_foreign_key _______________________________ 549s 549s @pytest.mark.django_db 549s def test_foreign_key(): 549s """ 549s Test forward foreign-key relationships. 549s """ 549s 549s class ThreadSchema(ModelSchema): 549s class Config: 549s model = Thread 549s 549s class MessageSchema(ModelSchema): 549s class Config: 549s model = Message 549s 549s assert MessageSchema.schema() == { 549s "title": "MessageSchema", 549s "description": "A message posted in a thread.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "content": {"title": "Content", "description": "content", "type": "string"}, 549s "created_at": { 549s "title": "Created At", 549s "description": "created_at", 549s "type": "string", 549s "format": "date-time", 549s }, 549s "thread": {"title": "Thread", "description": "id", "type": "integer"}, 549s }, 549s "required": ["content", "created_at", "thread"], 549s } 549s 549s class MessageWithThreadSchema(ModelSchema): 549s 549s thread: ThreadSchema 549s 549s class Config: 549s model = Message 549s 549s > assert MessageWithThreadSchema.schema() == { 549s "title": "MessageWithThreadSchema", 549s "description": "A message posted in a thread.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "content": {"title": "Content", "description": "content", "type": "string"}, 549s "created_at": { 549s "title": "Created At", 549s "description": "created_at", 549s "type": "string", 549s "format": "date-time", 549s }, 549s "thread": {"$ref": "#/definitions/ThreadSchema"}, 549s }, 549s "required": ["content", "created_at", "thread"], 549s "definitions": { 549s "ThreadSchema": { 549s "title": "ThreadSchema", 549s "description": "A thread of messages.", 549s "type": "object", 549s "properties": { 549s "messages": { 549s "title": "Messages", 549s "description": "id", 549s "type": "array", 549s "items": { 549s "type": "object", 549s "additionalProperties": {"type": "integer"}, 549s }, 549s }, 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "title": { 549s "title": "Title", 549s "description": "title", 549s "maxLength": 30, 549s "type": "string", 549s }, 549s }, 549s "required": ["title"], 549s } 549s }, 549s } 549s E AssertionError: assert {'description...dSchema', ...} == {'definitions...thread'], ...} 549s E 549s E Omitting 4 identical items, use -vv to show 549s E Differing items: 549s E {'properties': {'content': {'description': 'content', 'title': 'Content', 'type': 'string'}, 'created_at': {'descripti...tion': 'id', 'title': 'Id', 'type': 'integer'}, 'thread': {'description': 'id', 'title': 'Thread', 'type': 'integer'}}} != {'properties': {'content': {'description': 'content', 'title': 'Content', 'type': 'string'}, 'created_at': {'descripti...ng'}, 'id': {'description': 'id', 'title': 'Id', 'type': 'integer'}, 'thread': {'$ref': '#/definitions/ThreadSchema'}}} 549s E Right contains 1 more item: 549s E {'defi... 549s E 549s E ...Full output truncated (86 lines hidden), use '-vv' to show 549s 549s tests/test_relations.py:181: AssertionError 549s _______________________________ test_one_to_one ________________________________ 549s 549s @pytest.mark.django_db 549s def test_one_to_one(): 549s """ 549s Test forward one-to-one relationships. 549s """ 549s 549s class UserSchema(ModelSchema): 549s class Config: 549s model = User 549s 549s class ProfileSchema(ModelSchema): 549s class Config: 549s model = Profile 549s 549s assert ProfileSchema.schema() == { 549s "title": "ProfileSchema", 549s "description": "A user's profile.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "user": {"title": "User", "description": "id", "type": "integer"}, 549s "website": { 549s "title": "Website", 549s "description": "website", 549s "default": "", 549s "maxLength": 200, 549s "type": "string", 549s }, 549s "location": { 549s "title": "Location", 549s "description": "location", 549s "default": "", 549s "maxLength": 100, 549s "type": "string", 549s }, 549s }, 549s "required": ["user"], 549s } 549s 549s class ProfileWithUserSchema(ModelSchema): 549s user: UserSchema 549s 549s class Config: 549s model = Profile 549s 549s > assert ProfileWithUserSchema.schema() == { 549s "title": "ProfileWithUserSchema", 549s "description": "A user's profile.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "user": {"$ref": "#/definitions/UserSchema"}, 549s "website": { 549s "title": "Website", 549s "description": "website", 549s "default": "", 549s "maxLength": 200, 549s "type": "string", 549s }, 549s "location": { 549s "title": "Location", 549s "description": "location", 549s "default": "", 549s "maxLength": 100, 549s "type": "string", 549s }, 549s }, 549s "required": ["user"], 549s "definitions": { 549s "UserSchema": { 549s "title": "UserSchema", 549s "description": "A user of the application.", 549s "type": "object", 549s "properties": { 549s "profile": { 549s "title": "Profile", 549s "description": "id", 549s "type": "integer", 549s }, 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "first_name": { 549s "title": "First Name", 549s "description": "first_name", 549s "maxLength": 50, 549s "type": "string", 549s }, 549s "last_name": { 549s "title": "Last Name", 549s "description": "last_name", 549s "maxLength": 50, 549s "type": "string", 549s }, 549s "email": { 549s "title": "Email", 549s "description": "email", 549s "maxLength": 254, 549s "type": "string", 549s }, 549s "created_at": { 549s "title": "Created At", 549s "description": "created_at", 549s "type": "string", 549s "format": "date-time", 549s }, 549s "updated_at": { 549s "title": "Updated At", 549s "description": "updated_at", 549s "type": "string", 549s "format": "date-time", 549s }, 549s }, 549s "required": ["first_name", "email", "created_at", "updated_at"], 549s } 549s }, 549s } 549s E AssertionError: assert {'description...rSchema', ...} == {'definitions...['user'], ...} 549s E 549s E Omitting 4 identical items, use -vv to show 549s E Differing items: 549s E {'properties': {'id': {'description': 'id', 'title': 'Id', 'type': 'integer'}, 'location': {'default': '', 'descriptio..., 'type': 'integer'}, 'website': {'default': '', 'description': 'website', 'maxLength': 200, 'title': 'Website', ...}}} != {'properties': {'id': {'description': 'id', 'title': 'Id', 'type': 'integer'}, 'location': {'default': '', 'descriptio...nitions/UserSchema'}, 'website': {'default': '', 'description': 'website', 'maxLength': 200, 'title': 'Website', ...}}} 549s E Right contains 1 more item: 549s E {'defi... 549s E 549s E ...Full output truncated (129 lines hidden), use '-vv' to show 549s 549s tests/test_relations.py:325: AssertionError 549s ___________________________ test_one_to_one_reverse ____________________________ 549s 549s @pytest.mark.django_db 549s def test_one_to_one_reverse(): 549s """ 549s Test reverse one-to-one relationships. 549s """ 549s 549s class ProfileSchema(ModelSchema): 549s class Config: 549s model = Profile 549s 549s class UserSchema(ModelSchema): 549s class Config: 549s model = User 549s 549s assert ProfileSchema.schema() == { 549s "title": "ProfileSchema", 549s "description": "A user's profile.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "user": {"title": "User", "description": "id", "type": "integer"}, 549s "website": { 549s "title": "Website", 549s "description": "website", 549s "default": "", 549s "maxLength": 200, 549s "type": "string", 549s }, 549s "location": { 549s "title": "Location", 549s "description": "location", 549s "default": "", 549s "maxLength": 100, 549s "type": "string", 549s }, 549s }, 549s "required": ["user"], 549s } 549s 549s class UserWithProfileSchema(ModelSchema): 549s profile: ProfileSchema 549s 549s class Config: 549s model = User 549s 549s > assert UserWithProfileSchema.schema() == { 549s "title": "UserWithProfileSchema", 549s "description": "A user of the application.", 549s "type": "object", 549s "properties": { 549s "profile": {"$ref": "#/definitions/ProfileSchema"}, 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "first_name": { 549s "title": "First Name", 549s "description": "first_name", 549s "maxLength": 50, 549s "type": "string", 549s }, 549s "last_name": { 549s "title": "Last Name", 549s "description": "last_name", 549s "maxLength": 50, 549s "type": "string", 549s }, 549s "email": { 549s "title": "Email", 549s "description": "email", 549s "maxLength": 254, 549s "type": "string", 549s }, 549s "created_at": { 549s "title": "Created At", 549s "description": "created_at", 549s "type": "string", 549s "format": "date-time", 549s }, 549s "updated_at": { 549s "title": "Updated At", 549s "description": "updated_at", 549s "type": "string", 549s "format": "date-time", 549s }, 549s }, 549s "required": ["profile", "first_name", "email", "created_at", "updated_at"], 549s "definitions": { 549s "ProfileSchema": { 549s "title": "ProfileSchema", 549s "description": "A user's profile.", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "user": {"title": "User", "description": "id", "type": "integer"}, 549s "website": { 549s "title": "Website", 549s "description": "website", 549s "default": "", 549s "maxLength": 200, 549s "type": "string", 549s }, 549s "location": { 549s "title": "Location", 549s "description": "location", 549s "default": "", 549s "maxLength": 100, 549s "type": "string", 549s }, 549s }, 549s "required": ["user"], 549s } 549s }, 549s } 549s E AssertionError: assert {'description...eSchema', ...} == {'definitions...ted_at'], ...} 549s E 549s E Omitting 3 identical items, use -vv to show 549s E Differing items: 549s E {'properties': {'created_at': {'description': 'created_at', 'format': 'date-time', 'title': 'Created At', 'type': 'str...th': 50, 'title': 'First Name', 'type': 'string'}, 'id': {'description': 'id', 'title': 'Id', 'type': 'integer'}, ...}} != {'properties': {'created_at': {'description': 'created_at', 'format': 'date-time', 'title': 'Created At', 'type': 'str...th': 50, 'title': 'First Name', 'type': 'string'}, 'id': {'description': 'id', 'title': 'Id', 'type': 'integer'}, ...}} 549s E {'required': ['first_name', 'emai... 549s E 549s E ...Full output truncated (115 lines hidden), use '-vv' to show 549s 549s tests/test_relations.py:442: AssertionError 549s ____________________________ test_generic_relation _____________________________ 549s 549s @pytest.mark.django_db 549s def test_generic_relation(): 549s """ 549s Test generic foreign-key relationships. 549s """ 549s 549s class TaggedSchema(ModelSchema): 549s class Config: 549s model = Tagged 549s 549s assert TaggedSchema.schema() == { 549s "title": "TaggedSchema", 549s "description": "Tagged(id, slug, content_type, object_id)", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "slug": { 549s "title": "Slug", 549s "description": "slug", 549s "maxLength": 50, 549s "type": "string", 549s }, 549s "content_type": { 549s "title": "Content Type", 549s "description": "id", 549s "type": "integer", 549s }, 549s "object_id": { 549s "title": "Object Id", 549s "description": "object_id", 549s "type": "integer", 549s }, 549s "content_object": { 549s "title": "Content Object", 549s "description": "content_object", 549s "type": "integer", 549s }, 549s }, 549s "required": ["slug", "content_type", "object_id", "content_object"], 549s } 549s 549s > class BookmarkSchema(ModelSchema): 549s 549s tests/test_relations.py:551: 549s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 549s /usr/lib/python3/dist-packages/djantic/main.py:45: in __new__ 549s cls = super().__new__(mcs, name, bases, namespace) 549s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 549s /usr/lib/python3/dist-packages/pydantic/v1/main.py:221: in __new__ 549s inferred = ModelField.infer( 549s /usr/lib/python3/dist-packages/pydantic/v1/fields.py:504: in infer 549s return cls( 549s /usr/lib/python3/dist-packages/pydantic/v1/fields.py:434: in __init__ 549s self.prepare() 549s /usr/lib/python3/dist-packages/pydantic/v1/fields.py:544: in prepare 549s self._set_default_and_type() 549s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 549s 549s self = ModelField(name='tags', type=UndefinedType, required=False, default=None) 549s 549s def _set_default_and_type(self) -> None: 549s """ 549s Set the default value, infer the type if needed and check if `None` value is valid. 549s """ 549s if self.default_factory is not None: 549s if self.type_ is Undefined: 549s raise errors_.ConfigError( 549s f'you need to set the type of field {self.name!r} when using `default_factory`' 549s ) 549s return 549s 549s default_value = self.get_default() 549s 549s if default_value is not None and self.type_ is Undefined: 549s self.type_ = default_value.__class__ 549s self.outer_type_ = self.type_ 549s self.annotation = self.type_ 549s 549s if self.type_ is Undefined: 549s > raise errors_.ConfigError(f'unable to infer type for attribute "{self.name}"') 549s E pydantic.v1.errors.ConfigError: unable to infer type for attribute "tags" 549s 549s /usr/lib/python3/dist-packages/pydantic/v1/fields.py:576: ConfigError 549s _______________________________ test_m2m_reverse _______________________________ 549s 549s @pytest.mark.django_db 549s def test_m2m_reverse(): 549s class ExpertSchema(ModelSchema): 549s class Config: 549s model = Expert 549s 549s class CaseSchema(ModelSchema): 549s class Config: 549s model = Case 549s 549s assert ExpertSchema.schema() == { 549s "title": "ExpertSchema", 549s "description": "Expert(id, name)", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "name": { 549s "title": "Name", 549s "description": "name", 549s "maxLength": 128, 549s "type": "string", 549s }, 549s "cases": { 549s "title": "Cases", 549s "description": "id", 549s "type": "array", 549s "items": { 549s "type": "object", 549s "additionalProperties": {"type": "integer"}, 549s }, 549s }, 549s }, 549s "required": ["name", "cases"], 549s } 549s 549s assert CaseSchema.schema() == { 549s "title": "CaseSchema", 549s "description": "Case(id, name, details)", 549s "type": "object", 549s "properties": { 549s "related_experts": { 549s "title": "Related Experts", 549s "description": "id", 549s "type": "array", 549s "items": { 549s "type": "object", 549s "additionalProperties": {"type": "integer"}, 549s }, 549s }, 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "name": { 549s "title": "Name", 549s "description": "name", 549s "maxLength": 128, 549s "type": "string", 549s }, 549s "details": {"title": "Details", "description": "details", "type": "string"}, 549s }, 549s "required": ["name", "details"], 549s } 549s case = Case.objects.create(name="My Case", details="Some text data.") 549s expert = Expert.objects.create(name="My Expert") 549s case_schema = CaseSchema.from_django(case) 549s expert_schema = ExpertSchema.from_django(expert) 549s assert case_schema.dict() == { 549s "related_experts": [], 549s "id": 1, 549s "name": "My Case", 549s "details": "Some text data.", 549s } 549s assert expert_schema.dict() == {"id": 1, "name": "My Expert", "cases": []} 549s 549s expert.cases.add(case) 549s case_schema = CaseSchema.from_django(case) 549s expert_schema = ExpertSchema.from_django(expert) 549s assert case_schema.dict() == { 549s "related_experts": [{"id": 1}], 549s "id": 1, 549s "name": "My Case", 549s "details": "Some text data.", 549s } 549s assert expert_schema.dict() == {"id": 1, "name": "My Expert", "cases": [{"id": 1}]} 549s 549s class CustomExpertSchema(ModelSchema): 549s """Custom schema""" 549s 549s name: Optional[str] 549s 549s class Config: 549s model = Expert 549s 549s class CaseSchema(ModelSchema): 549s related_experts: List[CustomExpertSchema] 549s 549s class Config: 549s model = Case 549s 549s > assert CaseSchema.schema() == { 549s "title": "CaseSchema", 549s "description": "Case(id, name, details)", 549s "type": "object", 549s "properties": { 549s "related_experts": { 549s "title": "Related Experts", 549s "type": "array", 549s "items": {"$ref": "#/definitions/CustomExpertSchema"}, 549s }, 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "name": { 549s "title": "Name", 549s "description": "name", 549s "maxLength": 128, 549s "type": "string", 549s }, 549s "details": {"title": "Details", "description": "details", "type": "string"}, 549s }, 549s "required": ["related_experts", "name", "details"], 549s "definitions": { 549s "CustomExpertSchema": { 549s "title": "CustomExpertSchema", 549s "description": "Custom schema", 549s "type": "object", 549s "properties": { 549s "id": {"title": "Id", "description": "id", "type": "integer"}, 549s "name": {"title": "Name", "type": "string"}, 549s "cases": { 549s "title": "Cases", 549s "description": "id", 549s "type": "array", 549s "items": { 549s "type": "object", 549s "additionalProperties": {"type": "integer"}, 549s }, 549s }, 549s }, 549s "required": ["cases"], 549s } 549s }, 549s } 549s E AssertionError: assert {'description...eSchema', ...} == {'definitions...etails'], ...} 549s E 549s E Omitting 3 identical items, use -vv to show 549s E Differing items: 549s E {'properties': {'details': {'description': 'details', 'title': 'Details', 'type': 'string'}, 'id': {'description': 'id...items': {'additionalProperties': {'type': 'integer'}, 'type': 'object'}, 'title': 'Related Experts', 'type': 'array'}}} != {'properties': {'details': {'description': 'details', 'title': 'Details', 'type': 'string'}, 'id': {'description': 'id...elated_experts': {'items': {'$ref': '#/definitions/CustomExpertSchema'}, 'title': 'Related Experts', 'type': 'array'}}} 549s E {'required': ['name', 'details']}... 549s E 549s E ...Full output truncated (90 lines hidden), use '-vv' to show 549s 549s tests/test_relations.py:807: AssertionError 549s ________________________ test_include_from_annotations _________________________ 549s 549s @pytest.mark.django_db 549s def test_include_from_annotations(): 549s """ 549s Test include="__annotations__" config. 549s """ 549s 549s class ProfileSchema(ModelSchema): 549s website: str 549s 549s class Config: 549s model = Profile 549s include = "__annotations__" 549s 549s > assert ProfileSchema.schema() == { 549s "title": "ProfileSchema", 549s "description": "A user's profile.", 549s "type": "object", 549s "properties": { 549s "website": { 549s "title": "Website", 549s "type": "string" 549s } 549s }, 549s "required": [ 549s "website" 549s ] 549s } 549s E AssertionError: assert {'description...eSchema', ...} == {'description...eSchema', ...} 549s E 549s E Omitting 3 identical items, use -vv to show 549s E Differing items: 549s E {'properties': {'id': {'description': 'id', 'title': 'Id', 'type': 'integer'}, 'location': {'default': '', 'descriptio..., 'type': 'integer'}, 'website': {'default': '', 'description': 'website', 'maxLength': 200, 'title': 'Website', ...}}} != {'properties': {'website': {'title': 'Website', 'type': 'string'}}} 549s E {'required': ['user']} != {'required': ['website']} 549s E 549s E Full diff:... 549s E 549s E ...Full output truncated (35 lines hidden), use '-vv' to show 549s 549s tests/test_schemas.py:398: AssertionError 549s =============================== warnings summary =============================== 549s ../../../usr/lib/python3/dist-packages/djantic/main.py:12 549s /usr/lib/python3/dist-packages/djantic/main.py:12: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater. 549s from pydantic.v1 import BaseModel, ConfigError, create_model 549s 549s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 549s ============================= slowest 10 durations ============================= 549s 0.29s setup tests/test_fields.py::test_unhandled_field_type 549s 0.01s call tests/test_relations.py::test_m2m_reverse 549s 0.01s call tests/test_fields.py::test_enum_choices 549s 0.01s call tests/test_queries.py::test_get_queryset_with_reverse_foreign_key 549s 0.01s call tests/test_queries.py::test_get_queryset_with_reverse_one_to_one 549s 0.01s call tests/test_relations.py::test_one_to_one_reverse 549s 0.01s call tests/test_relations.py::test_one_to_one 549s 0.01s call tests/test_relations.py::test_m2m 549s 0.01s call tests/test_schemas.py::test_include_exclude 549s 0.01s call tests/test_queries.py::test_get_instance_with_generic_foreign_key 549s =========================== short test summary info ============================ 549s FAILED tests/test_queries.py::test_get_instance_with_generic_foreign_key - As... 549s FAILED tests/test_queries.py::test_get_queryset_with_reverse_one_to_one - Ass... 549s FAILED tests/test_queries.py::test_get_queryset_with_foreign_key - AssertionE... 549s FAILED tests/test_queries.py::test_get_queryset_with_reverse_foreign_key - As... 549s FAILED tests/test_relations.py::test_m2m - AssertionError: assert {'descripti... 549s FAILED tests/test_relations.py::test_foreign_key - AssertionError: assert {'d... 549s FAILED tests/test_relations.py::test_one_to_one - AssertionError: assert {'de... 549s FAILED tests/test_relations.py::test_one_to_one_reverse - AssertionError: ass... 549s FAILED tests/test_relations.py::test_generic_relation - pydantic.v1.errors.Co... 549s FAILED tests/test_relations.py::test_m2m_reverse - AssertionError: assert {'d... 549s FAILED tests/test_schemas.py::test_include_from_annotations - AssertionError:... 549s ============ 11 failed, 17 passed, 4 deselected, 1 warning in 1.02s ============ 550s autopkgtest [01:57:52]: test upstream: -----------------------] 551s autopkgtest [01:57:53]: test upstream: - - - - - - - - - - results - - - - - - - - - - 551s upstream FAIL non-zero exit status 1 551s autopkgtest [01:57:53]: @@@@@@@@@@@@@@@@@@@@ summary 551s upstream FAIL non-zero exit status 1