I: pbuilder: network access will be disabled during build I: Current time: Sun Feb 15 04:07:42 -12 2026 I: pbuilder-time-stamp: 1771171662 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [python-cattrs_23.2.3-1.dsc] I: copying [./python-cattrs_23.2.3.orig.tar.xz] I: copying [./python-cattrs_23.2.3-1.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./python-cattrs_23.2.3-1.dsc: unsupported subcommand dpkg-source: info: extracting python-cattrs in python-cattrs-23.2.3 dpkg-source: info: unpacking python-cattrs_23.2.3.orig.tar.xz dpkg-source: info: unpacking python-cattrs_23.2.3-1.debian.tar.xz I: using fakeroot in build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/81991/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='d93cdd29fb6342b9abcd2346e44a6dda' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='81991' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.NdSNEmq4/pbuilderrc_lzGE --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.NdSNEmq4/b1 --logfile b1/build.log python-cattrs_23.2.3-1.dsc' SUDO_GID='110' SUDO_UID='105' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://213.165.73.152:3128' I: uname -a Linux ionos5-amd64 6.11.10+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.10-1~bpo12+1 (2024-12-19) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/81991/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), pybuild-plugin-pyproject, python3-all, python3-attr, python3-bson, python3-hatch-vcs, python3-hatchling, python3-hypothesis, python3-msgpack, python3-pytest, python3-pytest-benchmark, python3-tomlkit, python3-ujson, python3-yaml dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19849 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python3-all; however: Package python3-all is not installed. pbuilder-satisfydepends-dummy depends on python3-attr; however: Package python3-attr is not installed. pbuilder-satisfydepends-dummy depends on python3-bson; however: Package python3-bson is not installed. pbuilder-satisfydepends-dummy depends on python3-hatch-vcs; however: Package python3-hatch-vcs is not installed. pbuilder-satisfydepends-dummy depends on python3-hatchling; however: Package python3-hatchling is not installed. pbuilder-satisfydepends-dummy depends on python3-hypothesis; however: Package python3-hypothesis is not installed. pbuilder-satisfydepends-dummy depends on python3-msgpack; however: Package python3-msgpack is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-benchmark; however: Package python3-pytest-benchmark is not installed. pbuilder-satisfydepends-dummy depends on python3-tomlkit; however: Package python3-tomlkit is not installed. pbuilder-satisfydepends-dummy depends on python3-ujson; however: Package python3-ujson is not installed. pbuilder-satisfydepends-dummy depends on python3-yaml; however: Package python3-yaml is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libcom-err2{a} libdebhelper-perl{a} libdouble-conversion3{a} libelf1t64{a} libexpat1{a} libffi8{a} libfile-stripnondeterminism-perl{a} libgssapi-krb5-2{a} libicu72{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libmagic-mgc{a} libmagic1t64{a} libnsl2{a} libpipeline1{a} libpython3-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libreadline8t64{a} libtirpc-common{a} libtirpc3t64{a} libtool{a} libuchardet0{a} libunistring5{a} libxml2{a} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-all{a} python3-attr{a} python3-autocommand{a} python3-bson{a} python3-build{a} python3-cpuinfo{a} python3-dateutil{a} python3-hatch-vcs{a} python3-hatchling{a} python3-hypothesis{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-minimal{a} python3-more-itertools{a} python3-msgpack{a} python3-packaging{a} python3-pathspec{a} python3-pkg-resources{a} python3-pluggy{a} python3-pyproject-hooks{a} python3-pytest{a} python3-pytest-benchmark{a} python3-setuptools{a} python3-setuptools-scm{a} python3-sortedcontainers{a} python3-toml{a} python3-tomlkit{a} python3-trove-classifiers{a} python3-typeguard{a} python3-typing-extensions{a} python3-ujson{a} python3-wheel{a} python3-yaml{a} python3-zipp{a} python3.12{a} python3.12-minimal{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} tzdata{a} The following packages are RECOMMENDED but will NOT be installed: ca-certificates curl krb5-locales libarchive-cpio-perl libltdl-dev libmail-sendmail-perl lynx python3-bson-ext python3-click python3-elasticsearch python3-freezegun python3-pygal python3-pygments wget 0 packages upgraded, 98 newly installed, 0 to remove and 0 not upgraded. Need to get 36.3 MB of archives. After unpacking 143 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.1-3 [858 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.1-3 [2202 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2024b-5 [256 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.6-1 [23.6 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.1-3 [1973 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.1-3 [740 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libpython3.12-minimal amd64 3.12.8-5 [817 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 python3.12-minimal amd64 3.12.8-5 [2164 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.22.5-4 [200 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-7 [1185 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.3-1 [92.1 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-5 [294 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.22.5-4 [723 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.23 [90.6 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-2 [539 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 38 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-1 [476 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-6 [9421 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.22.5-4 [1600 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.23 [919 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 python3-more-itertools all 10.5.0-1 [63.8 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 python3-typeguard all 4.4.1-1 [37.0 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 python3-inflect all 7.3.1-2 [32.4 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 python3-jaraco.context all 6.0.0-1 [7984 B] Get: 53 http://deb.debian.org/debian unstable/main amd64 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 python3-pkg-resources all 75.6.0-1 [222 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 python3-zipp all 3.21.0-1 [10.6 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 python3-setuptools all 75.6.0-1 [720 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 dh-python all 6.20250108 [113 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-1 [24.0 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libdouble-conversion3 amd64 3.3.0-1+b2 [41.8 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-3 [32.5 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-3 [79.9 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 64 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-3 [324 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-3 [136 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 libtirpc3t64 amd64 1.3.4+ds-1.3+b1 [83.1 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libnsl2 amd64 1.3.0-3+b3 [40.6 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 libpython3.12-stdlib amd64 3.12.8-5 [1971 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-2 [52.5 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 24.2-1 [55.3 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 python3-toml all 0.10.2-1 [16.2 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 python3-wheel all 0.45.1-1 [56.7 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 python3-build all 1.2.2-1 [36.0 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 pybuild-plugin-pyproject all 6.20250108 [11.6 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 python3.12 amd64 3.12.8-5 [677 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 python3-all amd64 3.13.1-2 [1056 B] Get: 80 http://deb.debian.org/debian unstable/main amd64 python3-attr all 24.2.0-1 [68.4 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 python3-bson all 4.10.1-4 [87.1 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 python3-cpuinfo all 9.0.0+git20221119-2 [23.4 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 python3-dateutil all 2.9.0-3 [79.3 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 python3-pathspec all 0.12.1-1 [28.1 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 python3-trove-classifiers all 2024.9.12-1 [10.2 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 python3-hatchling all 1.27.0-1 [47.0 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 python3-setuptools-scm all 8.1.0-1 [40.5 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 python3-hatch-vcs all 0.4.0-1 [8336 B] Get: 90 http://deb.debian.org/debian unstable/main amd64 python3-sortedcontainers all 2.4.0-2 [31.9 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 python3-hypothesis all 6.122.1-1 [326 kB] Get: 92 http://deb.debian.org/debian unstable/main amd64 python3-iniconfig all 1.1.1-2 [6396 B] Get: 93 http://deb.debian.org/debian unstable/main amd64 python3-msgpack amd64 1.0.3-3+b3 [112 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 python3-pytest all 8.3.4-1 [250 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 python3-pytest-benchmark all 5.1.0-1 [44.4 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 python3-tomlkit all 0.13.2-1 [42.7 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 python3-ujson amd64 5.10.0-1+b3 [25.5 kB] Get: 98 http://deb.debian.org/debian unstable/main amd64 python3-yaml amd64 6.0.2-1+b1 [178 kB] Fetched 36.3 MB in 1s (30.4 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:amd64. (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 ... 19849 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.1-3_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.1-3) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.1-3_amd64.deb ... Unpacking python3.13-minimal (3.13.1-3) ... Setting up libpython3.13-minimal:amd64 (3.13.1-3) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.13-minimal (3.13.1-3) ... Selecting previously unselected package python3-minimal. (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 ... 20183 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_amd64.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2024b-5_all.deb ... Unpacking tzdata (2024b-5) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.6-1_amd64.deb ... Unpacking libffi8:amd64 (3.4.6-1) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.1-3_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.1-3) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.1-3_amd64.deb ... Unpacking python3.13 (3.13.1-3) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... Selecting previously unselected package python3. (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 ... 21193 files and directories currently installed.) Preparing to unpack .../00-python3_3.13.1-2_amd64.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package libpython3.12-minimal:amd64. Preparing to unpack .../01-libpython3.12-minimal_3.12.8-5_amd64.deb ... Unpacking libpython3.12-minimal:amd64 (3.12.8-5) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../02-python3.12-minimal_3.12.8-5_amd64.deb ... Unpacking python3.12-minimal (3.12.8-5) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../03-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../04-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../05-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../06-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../07-gettext-base_0.22.5-4_amd64.deb ... Unpacking gettext-base (0.22.5-4) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../08-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../09-groff-base_1.23.0-7_amd64.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../10-bsdextrautils_2.40.3-1_amd64.deb ... Unpacking bsdextrautils (2.40.3-1) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../11-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../12-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../13-m4_1.4.19-5_amd64.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../14-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../15-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../16-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../17-autopoint_0.22.5-4_all.deb ... Unpacking autopoint (0.22.5-4) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../18-libdebhelper-perl_13.23_all.deb ... Unpacking libdebhelper-perl (13.23) ... Selecting previously unselected package libtool. Preparing to unpack .../19-libtool_2.5.4-2_all.deb ... Unpacking libtool (2.5.4-2) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../20-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../21-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../22-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../23-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../24-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../25-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../26-libunistring5_1.3-1_amd64.deb ... Unpacking libunistring5:amd64 (1.3-1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../27-libicu72_72.1-6_amd64.deb ... Unpacking libicu72:amd64 (72.1-6) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../28-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../29-gettext_0.22.5-4_amd64.deb ... Unpacking gettext (0.22.5-4) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../30-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../31-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../32-debhelper_13.23_all.deb ... Unpacking debhelper (13.23) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../33-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../34-python3-more-itertools_10.5.0-1_all.deb ... Unpacking python3-more-itertools (10.5.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../35-python3-typing-extensions_4.12.2-2_all.deb ... Unpacking python3-typing-extensions (4.12.2-2) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../36-python3-typeguard_4.4.1-1_all.deb ... Unpacking python3-typeguard (4.4.1-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../37-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../38-python3-jaraco.context_6.0.0-1_all.deb ... Unpacking python3-jaraco.context (6.0.0-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../39-python3-jaraco.functools_4.1.0-1_all.deb ... Unpacking python3-jaraco.functools (4.1.0-1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../40-python3-pkg-resources_75.6.0-1_all.deb ... Unpacking python3-pkg-resources (75.6.0-1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../41-python3-jaraco.text_4.0.0-1_all.deb ... Unpacking python3-jaraco.text (4.0.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../42-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../43-python3-setuptools_75.6.0-1_all.deb ... Unpacking python3-setuptools (75.6.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../44-dh-python_6.20250108_all.deb ... Unpacking dh-python (6.20250108) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../45-libcom-err2_1.47.2-1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-1) ... Selecting previously unselected package libdouble-conversion3:amd64. Preparing to unpack .../46-libdouble-conversion3_3.3.0-1+b2_amd64.deb ... Unpacking libdouble-conversion3:amd64 (3.3.0-1+b2) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../47-libkrb5support0_1.21.3-3_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-3) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../48-libk5crypto3_1.21.3-3_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-3) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../49-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../50-libkrb5-3_1.21.3-3_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-3) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../51-libgssapi-krb5-2_1.21.3-3_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-3) ... Selecting previously unselected package libtirpc-common. Preparing to unpack .../52-libtirpc-common_1.3.4+ds-1.3_all.deb ... Unpacking libtirpc-common (1.3.4+ds-1.3) ... Selecting previously unselected package libtirpc3t64:amd64. Preparing to unpack .../53-libtirpc3t64_1.3.4+ds-1.3+b1_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3 to /lib/x86_64-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/x86_64-linux-gnu/libtirpc.so.3.0.0 to /lib/x86_64-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:amd64. Preparing to unpack .../54-libnsl2_1.3.0-3+b3_amd64.deb ... Unpacking libnsl2:amd64 (1.3.0-3+b3) ... Selecting previously unselected package libpython3.12-stdlib:amd64. Preparing to unpack .../55-libpython3.12-stdlib_3.12.8-5_amd64.deb ... Unpacking libpython3.12-stdlib:amd64 (3.12.8-5) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../56-libyaml-0-2_0.2.5-2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-2) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../57-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../58-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../59-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../60-python3-wheel_0.45.1-1_all.deb ... Unpacking python3-wheel (0.45.1-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../61-python3-build_1.2.2-1_all.deb ... Unpacking python3-build (1.2.2-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../62-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../63-pybuild-plugin-pyproject_6.20250108_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250108) ... Selecting previously unselected package python3.12. Preparing to unpack .../64-python3.12_3.12.8-5_amd64.deb ... Unpacking python3.12 (3.12.8-5) ... Selecting previously unselected package python3-all. Preparing to unpack .../65-python3-all_3.13.1-2_amd64.deb ... Unpacking python3-all (3.13.1-2) ... Selecting previously unselected package python3-attr. Preparing to unpack .../66-python3-attr_24.2.0-1_all.deb ... Unpacking python3-attr (24.2.0-1) ... Selecting previously unselected package python3-bson. Preparing to unpack .../67-python3-bson_4.10.1-4_all.deb ... Unpacking python3-bson (4.10.1-4) ... Selecting previously unselected package python3-cpuinfo. Preparing to unpack .../68-python3-cpuinfo_9.0.0+git20221119-2_all.deb ... Unpacking python3-cpuinfo (9.0.0+git20221119-2) ... Selecting previously unselected package python3-dateutil. Preparing to unpack .../69-python3-dateutil_2.9.0-3_all.deb ... Unpacking python3-dateutil (2.9.0-3) ... Selecting previously unselected package python3-pathspec. Preparing to unpack .../70-python3-pathspec_0.12.1-1_all.deb ... Unpacking python3-pathspec (0.12.1-1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../71-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-trove-classifiers. Preparing to unpack .../72-python3-trove-classifiers_2024.9.12-1_all.deb ... Unpacking python3-trove-classifiers (2024.9.12-1) ... Selecting previously unselected package python3-hatchling. Preparing to unpack .../73-python3-hatchling_1.27.0-1_all.deb ... Unpacking python3-hatchling (1.27.0-1) ... Selecting previously unselected package python3-setuptools-scm. Preparing to unpack .../74-python3-setuptools-scm_8.1.0-1_all.deb ... Unpacking python3-setuptools-scm (8.1.0-1) ... Selecting previously unselected package python3-hatch-vcs. Preparing to unpack .../75-python3-hatch-vcs_0.4.0-1_all.deb ... Unpacking python3-hatch-vcs (0.4.0-1) ... Selecting previously unselected package python3-sortedcontainers. Preparing to unpack .../76-python3-sortedcontainers_2.4.0-2_all.deb ... Unpacking python3-sortedcontainers (2.4.0-2) ... Selecting previously unselected package python3-hypothesis. Preparing to unpack .../77-python3-hypothesis_6.122.1-1_all.deb ... Unpacking python3-hypothesis (6.122.1-1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../78-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-msgpack. Preparing to unpack .../79-python3-msgpack_1.0.3-3+b3_amd64.deb ... Unpacking python3-msgpack (1.0.3-3+b3) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../80-python3-pytest_8.3.4-1_all.deb ... Unpacking python3-pytest (8.3.4-1) ... Selecting previously unselected package python3-pytest-benchmark. Preparing to unpack .../81-python3-pytest-benchmark_5.1.0-1_all.deb ... Unpacking python3-pytest-benchmark (5.1.0-1) ... Selecting previously unselected package python3-tomlkit. Preparing to unpack .../82-python3-tomlkit_0.13.2-1_all.deb ... Unpacking python3-tomlkit (0.13.2-1) ... Selecting previously unselected package python3-ujson:amd64. Preparing to unpack .../83-python3-ujson_5.10.0-1+b3_amd64.deb ... Unpacking python3-ujson:amd64 (5.10.0-1+b3) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../84-python3-yaml_6.0.2-1+b1_amd64.deb ... Unpacking python3-yaml (6.0.2-1+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libdouble-conversion3:amd64 (3.3.0-1+b2) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libicu72:amd64 (72.1-6) ... Setting up bsdextrautils (2.40.3-1) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-2) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libdebhelper-perl (13.23) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libpython3.12-minimal:amd64 (3.12.8-5) ... Setting up gettext-base (0.22.5-4) ... Setting up m4 (1.4.19-5) ... Setting up libcom-err2:amd64 (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libkrb5support0:amd64 (1.21.3-3) ... Setting up tzdata (2024b-5) ... Current default time zone: 'Etc/UTC' Local time is now: Sun Feb 15 16:09:10 UTC 2026. Universal Time is now: Sun Feb 15 16:09:10 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libunistring5:amd64 (1.3-1) ... Setting up autopoint (0.22.5-4) ... Setting up libk5crypto3:amd64 (1.21.3-3) ... Setting up autoconf (2.72-3) ... Setting up libffi8:amd64 (3.4.6-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up netbase (6.4) ... Setting up libkrb5-3:amd64 (1.21.3-3) ... Setting up readline-common (8.2-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up python3.12-minimal (3.12.8-5) ... Setting up gettext (0.22.5-4) ... Setting up libtool (2.5.4-2) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libgssapi-krb5-2:amd64 (1.21.3-3) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up groff-base (1.23.0-7) ... Setting up libpython3.13-stdlib:amd64 (3.13.1-3) ... Setting up libpython3-stdlib:amd64 (3.13.1-2) ... Setting up libtirpc3t64:amd64 (1.3.4+ds-1.3+b1) ... Setting up python3.13 (3.13.1-3) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up python3 (3.13.1-2) ... Setting up python3-sortedcontainers (2.4.0-2) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-wheel (0.45.1-1) ... Setting up python3-ujson:amd64 (5.10.0-1+b3) ... Setting up python3-bson (4.10.1-4) ... Setting up python3-packaging (24.2-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-typing-extensions (4.12.2-2) ... Setting up python3-cpuinfo (9.0.0+git20221119-2) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-trove-classifiers (2024.9.12-1) ... Setting up libnsl2:amd64 (1.3.0-3+b3) ... Setting up python3-dateutil (2.9.0-3) ... Setting up python3-msgpack (1.0.3-3+b3) ... Setting up python3-build (1.2.2-1) ... Setting up python3-tomlkit (0.13.2-1) ... Setting up python3-pathspec (0.12.1-1) ... Setting up python3-more-itertools (10.5.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-attr (24.2.0-1) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up libpython3.12-stdlib:amd64 (3.12.8-5) ... Setting up python3-jaraco.context (6.0.0-1) ... Setting up python3-pytest (8.3.4-1) ... Setting up python3.12 (3.12.8-5) ... Setting up python3-hypothesis (6.122.1-1) ... Setting up python3-typeguard (4.4.1-1) ... Setting up python3-all (3.13.1-2) ... Setting up python3-yaml (6.0.2-1+b1) ... Setting up debhelper (13.23) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-hatchling (1.27.0-1) ... Setting up python3-pytest-benchmark (5.1.0-1) ... Setting up python3-pkg-resources (75.6.0-1) ... Setting up python3-setuptools (75.6.0-1) ... Setting up python3-setuptools-scm (8.1.0-1) ... Setting up python3-hatch-vcs (0.4.0-1) ... Setting up dh-python (6.20250108) ... Setting up pybuild-plugin-pyproject (6.20250108) ... Processing triggers for libc-bin (2.40-5) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps Reading package lists... Building dependency tree... Reading state information... fakeroot is already the newest version (1.36.2-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package I: Running cd /build/reproducible-path/python-cattrs-23.2.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../python-cattrs_23.2.3-1_source.changes dpkg-buildpackage: info: source package python-cattrs dpkg-buildpackage: info: source version 23.2.3-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Sandro Tosi dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 dpkg-source: info: using options from python-cattrs-23.2.3/debian/source/options: --extend-diff-ignore=^[^/]+.egg-info/ debian/rules clean dh clean --with python3 --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --with python3 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" module I: pybuild base:311: python3.12 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr * Building wheel... Successfully built cattrs-23.2.3-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr * Building wheel... Successfully built cattrs-23.2.3-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build; python3.12 -m pytest -v --ignore tests/test_unstructure_collections.py --ignore tests/test_preconf.py -k 'not test_orjson' ============================= test session starts ============================== platform linux -- Python 3.12.8, pytest-8.3.4, pluggy-1.5.0 -- /usr/bin/python3.12 cachedir: .pytest_cache benchmark: 5.1.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=True warmup_iterations=5) hypothesis profile 'tests' -> deadline=None, suppress_health_check=[HealthCheck.too_slow], database=DirectoryBasedExampleDatabase(PosixPath('/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/.hypothesis/examples')) rootdir: /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build configfile: pyproject.toml plugins: benchmark-5.1.0, hypothesis-6.122.1, typeguard-4.4.1 collecting ... collected 592 items tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_structure-_unstructure] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_structure-_undefined] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_structure-None] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_undefined-_unstructure] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_undefined-_undefined] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_undefined-None] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-None-_unstructure] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-None-_undefined] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-None-None] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_structure-_unstructure] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_structure-_undefined] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_structure-None] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_undefined-_unstructure] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_undefined-_undefined] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_undefined-None] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-None-_unstructure] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-None-_undefined] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-None-None] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_structure-_unstructure] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_structure-_undefined] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_structure-None] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_undefined-_unstructure] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_undefined-_undefined] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_undefined-None] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-None-_unstructure] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-None-_undefined] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-None-None] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_structure-_unstructure] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_structure-_undefined] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_structure-None] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_undefined-_unstructure] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_undefined-_undefined] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_undefined-None] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-None-_unstructure] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-None-_undefined] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-None-None] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_structure-_unstructure] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_structure-_undefined] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_structure-None] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_undefined-_unstructure] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_undefined-_undefined] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_undefined-None] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-None-_unstructure] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-None-_undefined] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-None-None] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_structure-_unstructure] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_structure-_undefined] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_structure-None] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_undefined-_unstructure] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_undefined-_undefined] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_undefined-None] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-None-_unstructure] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-None-_undefined] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-None-None] PASSED [ 9%] tests/strategies/test_native_unions.py::test_only_primitives[BaseConverter-True] PASSED [ 9%] tests/strategies/test_native_unions.py::test_only_primitives[BaseConverter-False] PASSED [ 9%] tests/strategies/test_native_unions.py::test_literals[BaseConverter-True] PASSED [ 9%] tests/strategies/test_native_unions.py::test_literals[BaseConverter-False] PASSED [ 9%] tests/strategies/test_native_unions.py::test_spillover[BaseConverter-True] PASSED [ 9%] tests/strategies/test_native_unions.py::test_spillover[BaseConverter-False] PASSED [ 10%] tests/strategies/test_native_unions.py::test_multiple_spillover[BaseConverter-True] PASSED [ 10%] tests/strategies/test_native_unions.py::test_multiple_spillover[BaseConverter-False] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_defaults[BaseConverter-True] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_defaults[BaseConverter-False] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_tag_name[BaseConverter-True] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_tag_name[BaseConverter-False] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator[BaseConverter-True] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator[BaseConverter-False] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[BaseConverter-True] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[BaseConverter-False] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_default_member[BaseConverter-True] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_default_member[BaseConverter-False] PASSED [ 12%] tests/strategies/test_tagged_unions.py::test_default_member_validation[BaseConverter-True] PASSED [ 12%] tests/strategies/test_tagged_unions.py::test_default_member_validation[BaseConverter-False] PASSED [ 12%] tests/test_any.py::test_unstructuring_dict_of_any[BaseConverter-True] PASSED [ 12%] tests/test_any.py::test_unstructuring_dict_of_any[BaseConverter-False] PASSED [ 12%] tests/test_converter.py::test_unstructure_fallbacks[BaseConverter] PASSED [ 13%] tests/test_converter.py::test_structure_fallbacks[BaseConverter] PASSED [ 13%] tests/test_converter.py::test_fallback_chaining[BaseConverter] PASSED [ 13%] tests/test_converter_inheritance.py::test_inheritance[BaseConverter-True] PASSED [ 13%] tests/test_converter_inheritance.py::test_inheritance[BaseConverter-False] PASSED [ 13%] tests/test_converter_inheritance.py::test_gen_hook_priority[BaseConverter-True] PASSED [ 13%] tests/test_converter_inheritance.py::test_gen_hook_priority[BaseConverter-False] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-True-Hashable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-True-Iterable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-True-Reversible] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-False-Hashable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-False-Iterable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-False-Reversible] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-True-Hashable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-True-Iterable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-True-Reversible] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-False-Hashable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-False-Iterable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-False-Reversible] PASSED [ 16%] tests/test_copy.py::test_deepcopy[BaseConverter] PASSED [ 16%] tests/test_copy.py::test_copy[BaseConverter] PASSED [ 16%] tests/test_copy.py::test_copy_hooks[BaseConverter] PASSED [ 16%] tests/test_copy.py::test_copy_func_hooks[BaseConverter] PASSED [ 16%] tests/test_dataclasses.py::test_dataclasses_in_attrs[BaseConverter-True] PASSED [ 16%] tests/test_dataclasses.py::test_dataclasses_in_attrs[BaseConverter-False] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses_in_container[BaseConverter-True] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses_in_container[BaseConverter-False] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses[BaseConverter-True] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses[BaseConverter-False] PASSED [ 17%] tests/test_disambiguators.py::test_converter_no_literals[BaseConverter-True] PASSED [ 17%] tests/test_disambiguators.py::test_converter_no_literals[BaseConverter-False] PASSED [ 18%] tests/test_factory_hooks.py::test_snake_to_camel[BaseConverter] PASSED [ 18%] tests/test_gen_dict.py::test_omitting[BaseConverter-True] PASSED [ 18%] tests/test_gen_dict.py::test_omitting[BaseConverter-False] PASSED [ 18%] tests/test_gen_dict.py::test_omitting_none[BaseConverter-True] PASSED [ 18%] tests/test_gen_dict.py::test_omitting_none[BaseConverter-False] PASSED [ 18%] tests/test_gen_dict.py::test_overriding_struct_hook[BaseConverter-True] PASSED [ 19%] tests/test_gen_dict.py::test_overriding_struct_hook[BaseConverter-False] PASSED [ 19%] tests/test_gen_dict.py::test_overriding_unstruct_hook[BaseConverter-True] PASSED [ 19%] tests/test_gen_dict.py::test_overriding_unstruct_hook[BaseConverter-False] PASSED [ 19%] tests/test_gen_dict.py::test_alias_keys[BaseConverter-True] PASSED [ 19%] tests/test_gen_dict.py::test_alias_keys[BaseConverter-False] PASSED [ 19%] tests/test_gen_dict.py::test_init_false[BaseConverter-True] PASSED [ 20%] tests/test_gen_dict.py::test_init_false[BaseConverter-False] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_overridden[BaseConverter-True] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_overridden[BaseConverter-False] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_field_override[BaseConverter-True] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_field_override[BaseConverter-False] PASSED [ 20%] tests/test_gen_dict.py::test_detailed_validation_from_converter[BaseConverter-True] PASSED [ 21%] tests/test_gen_dict.py::test_detailed_validation_from_converter[BaseConverter-False] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-True-int-str-result0] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-True-str-str-result1] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-True-List-str-result2] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-False-int-str-result0] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-False-str-str-result1] PASSED [ 22%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-False-List-str-result2] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-True-TClass-str-result0] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-True-List-str-result1] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-False-TClass-str-result0] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-False-List-str-result1] PASSED [ 22%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[BaseConverter-True] PASSED [ 23%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[BaseConverter-False] PASSED [ 23%] tests/test_generics.py::test_structure_unions_of_generics[BaseConverter-True] PASSED [ 23%] tests/test_generics.py::test_structure_unions_of_generics[BaseConverter-False] PASSED [ 23%] tests/test_generics.py::test_structure_list_of_generic_unions[BaseConverter-True] PASSED [ 23%] tests/test_generics.py::test_structure_list_of_generic_unions[BaseConverter-False] PASSED [ 23%] tests/test_generics.py::test_structure_deque_of_generic_unions[BaseConverter-True] PASSED [ 24%] tests/test_generics.py::test_structure_deque_of_generic_unions[BaseConverter-False] PASSED [ 24%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[BaseConverter-True] PASSED [ 24%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[BaseConverter-False] PASSED [ 24%] tests/test_generics.py::test_nongeneric_protocols[BaseConverter-True] PASSED [ 24%] tests/test_generics.py::test_nongeneric_protocols[BaseConverter-False] PASSED [ 25%] tests/test_optionals.py::test_optional_any[BaseConverter-True] PASSED [ 25%] tests/test_optionals.py::test_optional_any[BaseConverter-False] PASSED [ 25%] tests/test_typeddicts.py::test_detailed_validation_from_converter[BaseConverter-True] PASSED [ 25%] tests/test_typeddicts.py::test_detailed_validation_from_converter[BaseConverter-False] PASSED [ 25%] tests/test_unstructure.py::test_unstructure_hook_func[BaseConverter-True] PASSED [ 25%] tests/test_unstructure.py::test_unstructure_hook_func[BaseConverter-False] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_structure-_unstructure] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_structure-_undefined] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_structure-None] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_undefined-_unstructure] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_undefined-_undefined] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_undefined-None] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-None-_unstructure] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-None-_undefined] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-None-None] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_structure-_unstructure] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_structure-_undefined] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_structure-None] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_undefined-_unstructure] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_undefined-_undefined] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_undefined-None] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-None-_unstructure] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-None-_undefined] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-None-None] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_structure-_unstructure] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_structure-_undefined] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_structure-None] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_undefined-_unstructure] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_undefined-_undefined] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_undefined-None] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-None-_unstructure] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-None-_undefined] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-None-None] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_structure-_unstructure] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_structure-_undefined] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_structure-None] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_undefined-_unstructure] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_undefined-_undefined] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_undefined-None] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-None-_unstructure] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-None-_undefined] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-None-None] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_structure-_unstructure] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_structure-_undefined] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_structure-None] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_undefined-_unstructure] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_undefined-_undefined] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_undefined-None] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-None-_unstructure] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-None-_undefined] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-None-None] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_structure-_unstructure] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_structure-_undefined] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_structure-None] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_undefined-_unstructure] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_undefined-_undefined] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_undefined-None] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-None-_unstructure] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-None-_undefined] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-None-None] PASSED [ 35%] tests/strategies/test_native_unions.py::test_only_primitives[Converter-True] PASSED [ 35%] tests/strategies/test_native_unions.py::test_only_primitives[Converter-False] PASSED [ 35%] tests/strategies/test_native_unions.py::test_literals[Converter-True] PASSED [ 35%] tests/strategies/test_native_unions.py::test_literals[Converter-False] PASSED [ 35%] tests/strategies/test_native_unions.py::test_spillover[Converter-True] PASSED [ 35%] tests/strategies/test_native_unions.py::test_spillover[Converter-False] PASSED [ 36%] tests/strategies/test_native_unions.py::test_multiple_spillover[Converter-True] PASSED [ 36%] tests/strategies/test_native_unions.py::test_multiple_spillover[Converter-False] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_defaults[Converter-True] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_defaults[Converter-False] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_tag_name[Converter-True] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_tag_name[Converter-False] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator[Converter-True] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator[Converter-False] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[Converter-True] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[Converter-False] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_default_member[Converter-True] PASSED [ 38%] tests/strategies/test_tagged_unions.py::test_default_member[Converter-False] PASSED [ 38%] tests/strategies/test_tagged_unions.py::test_default_member_validation[Converter-True] PASSED [ 38%] tests/strategies/test_tagged_unions.py::test_default_member_validation[Converter-False] PASSED [ 38%] tests/test_any.py::test_unstructuring_dict_of_any[Converter-True] PASSED [ 38%] tests/test_any.py::test_unstructuring_dict_of_any[Converter-False] PASSED [ 38%] tests/test_converter.py::test_unstructure_fallbacks[Converter] PASSED [ 39%] tests/test_converter.py::test_structure_fallbacks[Converter] PASSED [ 39%] tests/test_converter.py::test_fallback_chaining[Converter] PASSED [ 39%] tests/test_converter_inheritance.py::test_inheritance[Converter-True] PASSED [ 39%] tests/test_converter_inheritance.py::test_inheritance[Converter-False] PASSED [ 39%] tests/test_converter_inheritance.py::test_gen_hook_priority[Converter-True] PASSED [ 39%] tests/test_converter_inheritance.py::test_gen_hook_priority[Converter-False] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-True-Hashable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-True-Iterable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-True-Reversible] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-False-Hashable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-False-Iterable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-False-Reversible] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-True-Hashable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-True-Iterable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-True-Reversible] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-False-Hashable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-False-Iterable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-False-Reversible] PASSED [ 42%] tests/test_copy.py::test_deepcopy[Converter] PASSED [ 42%] tests/test_copy.py::test_copy[Converter] PASSED [ 42%] tests/test_copy.py::test_copy_hooks[Converter] PASSED [ 42%] tests/test_copy.py::test_copy_func_hooks[Converter] PASSED [ 42%] tests/test_dataclasses.py::test_dataclasses_in_attrs[Converter-True] PASSED [ 42%] tests/test_dataclasses.py::test_dataclasses_in_attrs[Converter-False] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses_in_container[Converter-True] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses_in_container[Converter-False] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses[Converter-True] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses[Converter-False] PASSED [ 43%] tests/test_disambiguators.py::test_converter_no_literals[Converter-True] PASSED [ 43%] tests/test_disambiguators.py::test_converter_no_literals[Converter-False] PASSED [ 44%] tests/test_factory_hooks.py::test_snake_to_camel[Converter] PASSED [ 44%] tests/test_gen_dict.py::test_omitting[Converter-True] PASSED [ 44%] tests/test_gen_dict.py::test_omitting[Converter-False] PASSED [ 44%] tests/test_gen_dict.py::test_omitting_none[Converter-True] PASSED [ 44%] tests/test_gen_dict.py::test_omitting_none[Converter-False] PASSED [ 44%] tests/test_gen_dict.py::test_overriding_struct_hook[Converter-True] PASSED [ 45%] tests/test_gen_dict.py::test_overriding_struct_hook[Converter-False] PASSED [ 45%] tests/test_gen_dict.py::test_overriding_unstruct_hook[Converter-True] PASSED [ 45%] tests/test_gen_dict.py::test_overriding_unstruct_hook[Converter-False] PASSED [ 45%] tests/test_gen_dict.py::test_alias_keys[Converter-True] PASSED [ 45%] tests/test_gen_dict.py::test_alias_keys[Converter-False] PASSED [ 45%] tests/test_gen_dict.py::test_init_false[Converter-True] PASSED [ 46%] tests/test_gen_dict.py::test_init_false[Converter-False] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_overridden[Converter-True] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_overridden[Converter-False] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_field_override[Converter-True] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_field_override[Converter-False] PASSED [ 46%] tests/test_gen_dict.py::test_detailed_validation_from_converter[Converter-True] PASSED [ 47%] tests/test_gen_dict.py::test_detailed_validation_from_converter[Converter-False] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-True-int-str-result0] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-True-str-str-result1] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-True-List-str-result2] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-False-int-str-result0] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-False-str-str-result1] PASSED [ 48%] tests/test_generics.py::test_able_to_structure_generics[Converter-False-List-str-result2] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-True-TClass-str-result0] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-True-List-str-result1] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-False-TClass-str-result0] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-False-List-str-result1] PASSED [ 48%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[Converter-True] PASSED [ 49%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[Converter-False] PASSED [ 49%] tests/test_generics.py::test_structure_unions_of_generics[Converter-True] PASSED [ 49%] tests/test_generics.py::test_structure_unions_of_generics[Converter-False] PASSED [ 49%] tests/test_generics.py::test_structure_list_of_generic_unions[Converter-True] PASSED [ 49%] tests/test_generics.py::test_structure_list_of_generic_unions[Converter-False] PASSED [ 50%] tests/test_generics.py::test_structure_deque_of_generic_unions[Converter-True] PASSED [ 50%] tests/test_generics.py::test_structure_deque_of_generic_unions[Converter-False] PASSED [ 50%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[Converter-True] PASSED [ 50%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[Converter-False] PASSED [ 50%] tests/test_generics.py::test_nongeneric_protocols[Converter-True] PASSED [ 50%] tests/test_generics.py::test_nongeneric_protocols[Converter-False] PASSED [ 51%] tests/test_optionals.py::test_optional_any[Converter-True] PASSED [ 51%] tests/test_optionals.py::test_optional_any[Converter-False] PASSED [ 51%] tests/test_typeddicts.py::test_detailed_validation_from_converter[Converter-True] PASSED [ 51%] tests/test_typeddicts.py::test_detailed_validation_from_converter[Converter-False] PASSED [ 51%] tests/test_unstructure.py::test_unstructure_hook_func[Converter-True] PASSED [ 51%] tests/test_unstructure.py::test_unstructure_hook_func[Converter-False] PASSED [ 52%] tests/strategies/test_class_methods.py::test_nested_roundtrip PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-parent-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child1-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child2-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-grandchild-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-parent] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-child] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-grandchild] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-parent] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-child] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-grandchild] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-container] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-container] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-parent-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-child1-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-child2-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-grandchild-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-parent] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-child] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-grandchild] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-parent] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-child] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-grandchild] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-container] PASSED [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-container] PASSED [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-parent-only] PASSED [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-child1-only] XFAIL [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-child2-only] XFAIL [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-grandchild-only] XFAIL [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-compose-parent] PASSED [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-compose-child] PASSED [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-compose-grandchild] PASSED [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-compose-parent] XFAIL [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-compose-child] XFAIL [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-compose-grandchild] XFAIL [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-container] PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-container] XFAIL [ 58%] tests/strategies/test_include_subclasses.py::test_structure_as_union PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses] PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses-and-tagged-union] PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_circular_reference[wo-subclasses] XFAIL [ 58%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-parent-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child1-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child2-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-grandchild-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-parent] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-child] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-grandchild] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-parent] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-child] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-grandchild] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-container] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-container] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-parent-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-child1-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-child2-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-grandchild-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-parent] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-child] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-grandchild] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-parent] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-child] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-grandchild] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-container] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-container] PASSED [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-parent-only] PASSED [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-child1-only] XFAIL [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-child2-only] XFAIL [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-grandchild-only] XFAIL [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-compose-parent] PASSED [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-compose-child] PASSED [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-compose-grandchild] PASSED [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-compose-parent] XFAIL [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-compose-child] XFAIL [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-compose-grandchild] XFAIL [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-container] PASSED [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-container] XFAIL [ 65%] tests/strategies/test_include_subclasses.py::test_structuring_unstructuring_unknown_subclass PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_structuring_with_subclasses_argument PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-parent-only] PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-child1-only] PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-child2-only] PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-grandchild-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-parent-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child1-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child2-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-grandchild-only] PASSED [ 66%] tests/strategies/test_native_unions.py::test_skip_optionals PASSED [ 66%] tests/strategies/test_tagged_unions.py::test_forbid_extra_keys PASSED [ 67%] tests/strategies/test_tagged_unions.py::test_forbid_extra_keys_default PASSED [ 67%] tests/strategies/test_tagged_unions.py::test_nested_sequence_union PASSED [ 67%] tests/test_baseconverter.py::test_simple_roundtrip FAILED [ 67%] tests/test_baseconverter.py::test_simple_roundtrip_defaults PASSED [ 67%] tests/test_baseconverter.py::test_nested_roundtrip FAILED [ 67%] tests/test_baseconverter.py::test_nested_roundtrip_tuple FAILED [ 68%] tests/test_baseconverter.py::test_union_field_roundtrip FAILED [ 68%] tests/test_baseconverter.py::test_310_union_field_roundtrip FAILED [ 68%] tests/test_baseconverter.py::test_optional_field_roundtrip FAILED [ 68%] tests/test_baseconverter.py::test_310_optional_field_roundtrip FAILED [ 68%] tests/test_converter.py::test_simple_roundtrip FAILED [ 68%] tests/test_converter.py::test_simple_roundtrip_tuple FAILED [ 69%] tests/test_converter.py::test_simple_roundtrip_defaults PASSED [ 69%] tests/test_converter.py::test_simple_roundtrip_defaults_tuple FAILED [ 69%] tests/test_converter.py::test_simple_roundtrip_with_extra_keys_forbidden FAILED [ 69%] tests/test_converter.py::test_forbid_extra_keys PASSED [ 69%] tests/test_converter.py::test_forbid_extra_keys_defaults PASSED [ 69%] tests/test_converter.py::test_forbid_extra_keys_nested_override PASSED [ 70%] tests/test_converter.py::test_nested_roundtrip FAILED [ 70%] tests/test_converter.py::test_nested_roundtrip_tuple FAILED [ 70%] tests/test_converter.py::test_union_field_roundtrip FAILED [ 70%] tests/test_converter.py::test_310_union_field_roundtrip FAILED [ 70%] tests/test_converter.py::test_optional_field_roundtrip FAILED [ 70%] tests/test_converter.py::test_310_optional_field_roundtrip FAILED [ 71%] tests/test_converter.py::test_omit_default_roundtrip FAILED [ 71%] tests/test_converter.py::test_dict_roundtrip_with_alias PASSED [ 71%] tests/test_converter.py::test_type_overrides PASSED [ 71%] tests/test_converter.py::test_calling_back PASSED [ 71%] tests/test_converter.py::test_overriding_generated_unstructure PASSED [ 71%] tests/test_converter.py::test_overriding_generated_unstructure_hook_func PASSED [ 72%] tests/test_converter.py::test_overriding_generated_structure PASSED [ 72%] tests/test_converter.py::test_overriding_generated_structure_hook_func PASSED [ 72%] tests/test_converter.py::test_seq_of_simple_classes_unstructure PASSED [ 72%] tests/test_converter.py::test_seq_of_bare_classes_structure PASSED [ 72%] tests/test_converter.py::test_annotated_attrs PASSED [ 72%] tests/test_converter.py::test_annotated_with_typing_extensions_attrs PASSED [ 73%] tests/test_copy.py::test_copy_converter PASSED [ 73%] tests/test_copy.py::test_detailed_validation PASSED [ 73%] tests/test_copy.py::test_col_overrides PASSED [ 73%] tests/test_disambiguators.py::test_edge_errors PASSED [ 73%] tests/test_disambiguators.py::test_fallback PASSED [ 73%] tests/test_disambiguators.py::test_disambiguation PASSED [ 74%] tests/test_disambiguators.py::test_disambiguate_from_discriminated_enum PASSED [ 74%] tests/test_disambiguators.py::test_default_no_literals PASSED [ 74%] tests/test_final.py::test_unstructure_final[True] PASSED [ 74%] tests/test_final.py::test_unstructure_final[False] PASSED [ 74%] tests/test_final.py::test_structure_final[True] PASSED [ 75%] tests/test_final.py::test_structure_final[False] PASSED [ 75%] tests/test_final.py::test_unstructure_bare_final[True] PASSED [ 75%] tests/test_final.py::test_unstructure_bare_final[False] PASSED [ 75%] tests/test_final.py::test_structure_bare_final[True] PASSED [ 75%] tests/test_final.py::test_structure_bare_final[False] PASSED [ 75%] tests/test_function_dispatch.py::test_function_dispatch PASSED [ 76%] tests/test_function_dispatch.py::test_function_clears_cache_after_function_added PASSED [ 76%] tests/test_gen.py::test_structure_linecache PASSED [ 76%] tests/test_gen.py::test_unstructure_linecache PASSED [ 76%] tests/test_gen.py::test_no_linecache PASSED [ 76%] tests/test_gen.py::test_linecache_dedup PASSED [ 76%] tests/test_gen_dict.py::test_unmodified_generated_unstructuring PASSED [ 77%] tests/test_gen_dict.py::test_nodefs_generated_unstructuring PASSED [ 77%] tests/test_gen_dict.py::test_nodefs_generated_unstructuring_cl PASSED [ 77%] tests/test_gen_dict.py::test_individual_overrides PASSED [ 77%] tests/test_gen_dict.py::test_unmodified_generated_structuring PASSED [ 77%] tests/test_gen_dict.py::test_renaming FAILED [ 77%] tests/test_gen_dict.py::test_renaming_forbid_extra_keys PASSED [ 78%] tests/test_gen_dict.py::test_omitting_structure[True] PASSED [ 78%] tests/test_gen_dict.py::test_omitting_structure[False] PASSED [ 78%] tests/test_gen_dict.py::test_type_names_with_quotes PASSED [ 78%] tests/test_gen_dict.py::test_forbid_extra_keys_from_converter PASSED [ 78%] tests/test_gen_dict.py::test_forbid_extra_keys_from_baseconverter PASSED [ 78%] tests/test_gen_dict_563.py::test_roundtrip PASSED [ 79%] tests/test_gen_dict_563.py::test_roundtrip_dc PASSED [ 79%] tests/test_generics.py::test_deep_copy PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[True-int-result0] PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[True-str-result1] PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[False-int-result0] PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[False-str-result1] PASSED [ 80%] tests/test_generics.py::test_39_structure_generics_with_cols[int-result0] PASSED [ 80%] tests/test_generics.py::test_39_structure_generics_with_cols[str-result1] PASSED [ 80%] tests/test_generics.py::test_structure_nested_generics_with_cols[int-result0] PASSED [ 80%] tests/test_generics.py::test_structure_nested_generics_with_cols[int-result1] PASSED [ 80%] tests/test_generics.py::test_unstructure_generic_attrs[True] PASSED [ 80%] tests/test_generics.py::test_unstructure_generic_attrs[False] PASSED [ 81%] tests/test_generics.py::test_unstructure_optional[True] PASSED [ 81%] tests/test_generics.py::test_unstructure_optional[False] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics[True] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics[False] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics_list[True] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics_list[False] PASSED [ 82%] tests/test_generics.py::test_unstructure_protocol[True] PASSED [ 82%] tests/test_generics.py::test_unstructure_protocol[False] PASSED [ 82%] tests/test_generics.py::test_roundtrip_generic_with_union PASSED [ 82%] tests/test_generics.py::test_generate_typeddict_mapping PASSED [ 82%] tests/test_generics_604.py::test_unstructure_optional[True] PASSED [ 82%] tests/test_generics_604.py::test_unstructure_optional[False] PASSED [ 83%] tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_register_cls PASSED [ 83%] tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_register_func PASSED [ 83%] tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_conflict_class_wins PASSED [ 83%] tests/test_newtypes.py::test_newtype_structure_hooks[True] PASSED [ 83%] tests/test_newtypes.py::test_newtype_structure_hooks[False] PASSED [ 83%] tests/test_newtypes.py::test_newtype_unstructure_hooks[True] PASSED [ 84%] tests/test_newtypes.py::test_newtype_unstructure_hooks[False] PASSED [ 84%] tests/test_optionals.py::test_newtype_optionals[True] PASSED [ 84%] tests/test_optionals.py::test_newtype_optionals[False] PASSED [ 84%] tests/test_optionals.py::test_newtype_modern_optionals[True] PASSED [ 84%] tests/test_optionals.py::test_newtype_modern_optionals[False] PASSED [ 84%] tests/test_recursive.py::test_simple_recursive PASSED [ 85%] tests/test_structure.py::test_structuring_primitives PASSED [ 85%] tests/test_structure.py::test_structuring_seqs PASSED [ 85%] tests/test_structure.py::test_structuring_seqs_to_deque PASSED [ 85%] tests/test_structure.py::test_structuring_sets PASSED [ 85%] tests/test_structure.py::test_stringifying_sets PASSED [ 85%] tests/test_structure.py::test_structuring_hetero_tuples PASSED [ 86%] tests/test_structure.py::test_stringifying_tuples PASSED [ 86%] tests/test_structure.py::test_structuring_dicts PASSED [ 86%] tests/test_structure.py::test_structuring_dicts_opts PASSED [ 86%] tests/test_structure.py::test_stringifying_dicts PASSED [ 86%] tests/test_structure.py::test_structuring_optional_primitives PASSED [ 86%] tests/test_structure.py::test_structuring_lists_of_opt PASSED [ 87%] tests/test_structure.py::test_stringifying_lists_of_opt PASSED [ 87%] tests/test_structure.py::test_structuring_primitive_union_hook PASSED [ 87%] tests/test_structure.py::test_structure_hook_func PASSED [ 87%] tests/test_structure.py::test_structuring_enums PASSED [ 87%] tests/test_structure.py::test_structuring_unsupported PASSED [ 88%] tests/test_structure.py::test_subclass_registration_is_honored PASSED [ 88%] tests/test_structure.py::test_structure_union_edge_case PASSED [ 88%] tests/test_structure_attrs.py::test_structure_simple_from_dict PASSED [ 88%] tests/test_structure_attrs.py::test_structure_simple_from_dict_default FAILED [ 88%] tests/test_structure_attrs.py::test_roundtrip PASSED [ 88%] tests/test_structure_attrs.py::test_structure_tuple PASSED [ 89%] tests/test_structure_attrs.py::test_structure_union PASSED [ 89%] tests/test_structure_attrs.py::test_structure_union_none PASSED [ 89%] tests/test_structure_attrs.py::test_structure_union_explicit PASSED [ 89%] tests/test_structure_attrs.py::test_structure_literal[BaseConverter] PASSED [ 89%] tests/test_structure_attrs.py::test_structure_literal[Converter] PASSED [ 89%] tests/test_structure_attrs.py::test_structure_literal_enum[BaseConverter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_enum[Converter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_multiple[BaseConverter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_multiple[Converter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_error[BaseConverter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_error[Converter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_multiple_error[BaseConverter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_literal_multiple_error[Converter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_fallback_to_attrib_converters[BaseConverter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_fallback_to_attrib_converters[Converter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_prefers_attrib_converters[BaseConverter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_prefers_attrib_converters[Converter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_multitier_discriminator_union[BaseConverter] PASSED [ 92%] tests/test_structure_attrs.py::test_structure_multitier_discriminator_union[Converter] PASSED [ 92%] tests/test_typeddicts.py::test_simple_roundtrip PASSED [ 92%] tests/test_typeddicts.py::test_simple_nontotal PASSED [ 92%] tests/test_typeddicts.py::test_int_override PASSED [ 92%] tests/test_typeddicts.py::test_extra_keys PASSED [ 92%] tests/test_typeddicts.py::test_generics PASSED [ 93%] tests/test_typeddicts.py::test_not_required PASSED [ 93%] tests/test_typeddicts.py::test_required PASSED [ 93%] tests/test_typeddicts.py::test_omit PASSED [ 93%] tests/test_typeddicts.py::test_rename PASSED [ 93%] tests/test_typeddicts.py::test_forbid_extra_keys PASSED [ 93%] tests/test_typeddicts.py::test_recursive_generation PASSED [ 94%] tests/test_typeddicts.py::test_forwardref[True] PASSED [ 94%] tests/test_typeddicts.py::test_forwardref[False] PASSED [ 94%] tests/test_typeddicts.py::test_forbid_extra_keys_from_converter PASSED [ 94%] tests/test_typeddicts.py::test_forbid_extra_keys_from_baseconverter PASSED [ 94%] tests/test_unions.py::test_custom_union_toplevel_roundtrip[BaseConverter] PASSED [ 94%] tests/test_unions.py::test_custom_union_toplevel_roundtrip[Converter] PASSED [ 95%] tests/test_unions.py::test_310_custom_union_toplevel_roundtrip[BaseConverter] PASSED [ 95%] tests/test_unions.py::test_310_custom_union_toplevel_roundtrip[Converter] PASSED [ 95%] tests/test_unions.py::test_custom_union_clsfield_roundtrip[BaseConverter] PASSED [ 95%] tests/test_unions.py::test_custom_union_clsfield_roundtrip[Converter] PASSED [ 95%] tests/test_unstructure.py::test_seq_unstructure PASSED [ 95%] tests/test_unstructure.py::test_set_unstructure PASSED [ 96%] tests/test_unstructure.py::test_mapping_unstructure PASSED [ 96%] tests/test_unstructure.py::test_enum_unstructure PASSED [ 96%] tests/test_unstructure.py::test_attrs_asdict_unstructure PASSED [ 96%] tests/test_unstructure.py::test_attrs_astuple_unstructure PASSED [ 96%] tests/test_unstructure.py::test_unstructure_hooks PASSED [ 96%] tests/test_unstructure.py::test_seq_of_simple_classes_unstructure PASSED [ 97%] tests/test_v.py::test_attribute_errors PASSED [ 97%] tests/test_v.py::test_class_errors PASSED [ 97%] tests/test_v.py::test_sequence_errors PASSED [ 97%] tests/test_v.py::test_mapping_errors PASSED [ 97%] tests/test_v.py::test_custom_error_fn PASSED [ 97%] tests/test_v.py::test_custom_error_fn_nested PASSED [ 98%] tests/test_v.py::test_typeddict_attribute_errors PASSED [ 98%] tests/test_validation.py::test_class_validation PASSED [ 98%] tests/test_validation.py::test_external_class_validation PASSED [ 98%] tests/test_validation.py::test_list_validation PASSED [ 98%] tests/test_validation.py::test_mapping_validation PASSED [ 98%] tests/test_validation.py::test_counter_validation PASSED [ 99%] tests/test_validation.py::test_set_validation PASSED [ 99%] tests/test_validation.py::test_frozenset_validation PASSED [ 99%] tests/test_validation.py::test_homo_tuple_validation PASSED [ 99%] tests/test_validation.py::test_hetero_tuple_validation PASSED [ 99%] tests/test_validation.py::test_notes_pickling PASSED [100%] =================================== FAILURES =================================== ____________________________ test_simple_roundtrip _____________________________ @given(simple_typed_classes(newtypes=False), unstructure_strats) > def test_simple_roundtrip(cls_and_vals, strat): f = .run_test_as_given..wrapped_test at 0x7fadc9c37560> tests/test_baseconverter.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([], nan), {}) strat = @given(simple_typed_classes(newtypes=False), unstructure_strats) def test_simple_roundtrip(cls_and_vals, strat): """ Simple classes with metadata can be unstructured and restructured. """ converter = BaseConverter(unstruct_strat=strat) cl, vals, kwargs = cls_and_vals assume(strat is UnstructureStrategy.AS_DICT or not kwargs) inst = cl(*vals, **kwargs) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypAttrsClass(a=[], _b=nan) == HypAttrsClass(a=[], _b=nan) E E Omitting 1 identical items, use -vv to show E Differing attributes: E ['_b'] E E Drill down into differing attribute _b: E _b: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={})} E Falsifying example: test_simple_roundtrip( E cls_and_vals=(tests.typed.HypAttrsClass, ([], nan), {}), E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) cl = cls_and_vals = (, ([], nan), {}) converter = inst = HypAttrsClass(a=[], _b=nan) kwargs = {} strat = vals = ([], nan) tests/test_baseconverter.py:26: AssertionError ____________________________ test_nested_roundtrip _____________________________ @given(nested_typed_classes(newtypes=False)) > def test_nested_roundtrip(cls_and_vals): f = .run_test_as_given..wrapped_test at 0x7fadc9c202c0> tests/test_baseconverter.py:46: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ({}, [], [], {}, [], nan, ...), {}) @given(nested_typed_classes(newtypes=False)) def test_nested_roundtrip(cls_and_vals): """ Nested classes with metadata can be unstructured and restructured. """ converter = BaseConverter() cl, vals, kwargs = cls_and_vals # Vals are a tuple, convert into a dictionary. inst = cl(*vals, **kwargs) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypClass(a={}..._b={}, c={})]) == HypClass(a={}..._b={}, c={})]) E E Omitting 7 identical items, use -vv to show E Differing attributes: E ['_f'] E E Drill down into differing attribute _f: E _f: nan != nan E Falsifying example: test_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, E ({}, E [], E [], E {}, E [], E nan, E [], E [HypClass(a=[HypClass(a=0, E _b='', E c=[], E _d={}, E e={}, E _f=[], E g=[], E _h=('', '', ''), E i=0.0)], E _b={}, E c={})]), E {}), E ) cl = cls_and_vals = (, ({}, [], [], {}, [], nan, ...), {}) converter = inst = HypClass(a={}, _b=[], c=[], _d={}, e=[], _f=nan, g=[], _h=[HypClass(a=[HypClass(a=0, _b='', c=[], _d={}, e={}, _f=[], g=[], _h=('', '', ''), i=0.0)], _b={}, c={})]) kwargs = {} vals = ({}, [], [], {}, [], nan, ...) tests/test_baseconverter.py:54: AssertionError ---------------------------------- Hypothesis ---------------------------------- WARNING: Hypothesis has spent more than five minutes working to shrink a failing example, and stopped because it is making very slow progress. When you re-run your tests, shrinking will resume and may take this long before aborting again. PLEASE REPORT THIS if you can provide a reproducing example, so that we can improve shrinking performance for everyone. _________________________ test_nested_roundtrip_tuple __________________________ @given(nested_typed_classes(kw_only=False, newtypes=False)) > def test_nested_roundtrip_tuple(cls_and_vals): f = .run_test_as_given..wrapped_test at 0x7fadc9c20720> tests/test_baseconverter.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=[], _b=nan, c=[HypClass()])],), {}) @given(nested_typed_classes(kw_only=False, newtypes=False)) def test_nested_roundtrip_tuple(cls_and_vals): """ Nested classes with metadata can be unstructured and restructured. """ converter = BaseConverter(unstruct_strat=UnstructureStrategy.AS_TUPLE) cl, vals, kwargs = cls_and_vals assert not kwargs # Vals are a tuple, convert into a dictionary. inst = cl(*vals) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypClass(a=[H...HypClass()])]) == HypClass(a=[H...HypClass()])]) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: [HypClass(a=[], _b=nan, c=[HypClass()])] != [HypClass(a=[], _b=nan, c=[HypClass()])] E At index 0 diff: HypClass(a=[], _b=nan, c=[HypClass()]) != HypClass(a=[], _b=nan, c=[HypClass()])... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Falsifying example: test_nested_roundtrip_tuple( E cls_and_vals=(tests.typed.HypClass, E ([HypClass(a=[], _b=nan, c=[HypClass()])],), E {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3.12/difflib.py:490 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:103 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:112 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:474 E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 cl = cls_and_vals = (, ([HypClass(a=[], _b=nan, c=[HypClass()])],), {}) converter = inst = HypClass(a=[HypClass(a=[], _b=nan, c=[HypClass()])]) kwargs = {} vals = ([HypClass(a=[], _b=nan, c=[HypClass()])],) tests/test_baseconverter.py:67: AssertionError __________________________ test_union_field_roundtrip __________________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341, in from_call | result: TResult | None = func() | ^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 242, in | lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 182, in _multicall | return outcome.get_result() | ^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_result.py", line 100, in get_result | raise exc.with_traceback(exc.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call | yield from thread_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call | yield from unraisable_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 846, in pytest_runtest_call | yield from self._runtest_for(item, "call") | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 829, in _runtest_for | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/capture.py", line 880, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/skipping.py", line 257, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 174, in pytest_runtest_call | item.runtest() | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1627, in runtest | self.ihook.pytest_pyfunc_call(pyfuncitem=self) | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall | raise exception.with_traceback(exception.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 159, in pytest_pyfunc_call | result = testfunction(**testargs) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_baseconverter.py", line 71, in test_union_field_roundtrip | @given( | | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1758, in wrapped_test | raise the_error_hypothesis_found | ExceptionGroup: Hypothesis found 2 distinct failures. (2 sub-exceptions) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_baseconverter.py", line 109, in test_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(inst), C) | AssertionError: assert C(a=HypAttrsC..., e={}, g={})) == C(a=HypAttrsC..., e={}, g={})) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=nan, _b=frozenset(), _d=frozenset(), e={}, g={}) != HypAttrsClass(a=nan, _b=frozenset(), _d=frozenset(), e={}, g={}) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_union_field_roundtrip( | cl_and_vals_a=(tests.typed.HypAttrsClass, | (nan, frozenset(), frozenset(), {}, {}), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_TUPLE, # or any other generated value | ) +---------------- 2 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_baseconverter.py", line 99, in test_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(inst), C) | AssertionError: assert C(a=HypAttrsC..., e={}, g={})) == C(a=HypAttrsC..., e={}, g={})) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=nan, _b=frozenset(), _d=frozenset(), e={}, g={}) != HypAttrsClass(a=nan, _b=frozenset(), _d=frozenset(), e={}, g={}) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (nan, frozenset(), frozenset(), {}, {}), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_DICT, # or any other generated value | ) +------------------------------------ ________________________ test_310_union_field_roundtrip ________________________ @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") > @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) f = .run_test_as_given..wrapped_test at 0x7fadc9c21580> tests/test_baseconverter.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, (0, 0, '', '', {}, nan, ...), {'m': {}}) cl_and_vals_b = (, (None,), {}) strat = @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) @given( simple_typed_classes(defaults=False, newtypes=False), simple_typed_classes(defaults=False, newtypes=False), unstructure_strats, ) def test_310_union_field_roundtrip(cl_and_vals_a, cl_and_vals_b, strat): """ Classes with union fields can be unstructured and structured. """ converter = BaseConverter(unstruct_strat=strat) cl_a, vals_a, kwargs_a = cl_and_vals_a cl_b, vals_b, _ = cl_and_vals_b assume(strat is UnstructureStrategy.AS_DICT or not kwargs_a) a_field_names = {a.name for a in fields(cl_a)} b_field_names = {a.name for a in fields(cl_b)} assume(a_field_names) assume(b_field_names) common_names = a_field_names & b_field_names assume(len(a_field_names) > len(common_names)) @define class C: a: cl_a | cl_b inst = C(a=cl_a(*vals_a, **kwargs_a)) if strat is UnstructureStrategy.AS_DICT: > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC..., k={}, m={})) == C(a=HypAttrsC..., k={}, m={})) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=0, _b=0, _d='', e='', g={}, _h=nan, _j={}, k={}, m={}) != HypAttrsClass(a=0, _b=0, _d='', e='', g={}, _h=nan, _j={}, k={}, m={}) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'k': _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_l', metadata={}), 'm': _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_310_union_field_roundtrip( E # The test always failed when commented parts were varied together. E cl_and_vals_a=(tests.typed.HypAttrsClass, E (0, 0, '', '', {}, nan, {}, {}), E {'m': {}}), E cl_and_vals_b=(tests.typed.HypAttrsClass, E (None,), E {}), # or any other generated value E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> _ = {} a_field_names = {'_b', '_d', '_h', '_j', 'a', 'e', ...} b_field_names = {'a'} cl_a = cl_and_vals_a = (, (0, 0, '', '', {}, nan, ...), {'m': {}}) cl_and_vals_b = (, (None,), {}) cl_b = common_names = {'a'} converter = inst = C(a=HypAttrsClass(a=0, _b=0, _d='', e='', g={}, _h=nan, _j={}, k={}, m={})) kwargs_a = {'m': {}} strat = vals_a = (0, 0, '', '', {}, nan, ...) vals_b = (None,) tests/test_baseconverter.py:142: AssertionError ________________________ test_optional_field_roundtrip _________________________ @given(simple_typed_classes(defaults=False, newtypes=False)) > def test_optional_field_roundtrip(cl_and_vals): f = .run_test_as_given..wrapped_test at 0x7fadc9c20d60> tests/test_baseconverter.py:156: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}) @given(simple_typed_classes(defaults=False, newtypes=False)) def test_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = BaseConverter() cl, vals, kwargs = cl_and_vals @define class C: a: Optional[cl] inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsClass(a=nan)) == C(a=HypAttrsClass(a=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=nan) != HypAttrsClass(a=nan) E ... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, E (struct.unpack('d', struct.pack('Q', 0x7ff8000000000001))[0],), E {}), E ) C = .C'> cl = cl_and_vals = (, (nan,), {}) converter = inst = C(a=HypAttrsClass(a=nan)) kwargs = {} vals = (nan,) tests/test_baseconverter.py:168: AssertionError ______________________ test_310_optional_field_roundtrip _______________________ @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") > @given(simple_typed_classes(defaults=False, newtypes=False)) f = .run_test_as_given..wrapped_test at 0x7fadc9c205e0> tests/test_baseconverter.py:177: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, ('', '', '', frozenset(), frozenset(), frozenset(), ...), {}) @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") @given(simple_typed_classes(defaults=False, newtypes=False)) def test_310_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = BaseConverter() cl, vals, kwargs = cl_and_vals @define class C: a: cl | None inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC...m=[], _n=nan)) == C(a=HypAttrsC...m=[], _n=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a='', _b='', _d='', e=frozenset(), g=frozenset(), _h=frozenset(), _j={}, k=[], m=[], _n=nan) != HypAttrsClass(a='', _b='', _d='', e=frozenset(), g=frozenset(), _h=frozenset(), _j={}, k=[], m=[], _n=nan) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'k': _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_l', metadata={}), 'm': _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_n': _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='o', metadata={})} E Falsifying example: test_310_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, E ('', '', '', frozenset(), frozenset(), frozenset(), {}, [], [], nan), E {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> cl = cl_and_vals = (, ('', '', '', frozenset(), frozenset(), frozenset(), ...), {}) converter = inst = C(a=HypAttrsClass(a='', _b='', _d='', e=frozenset(), g=frozenset(), _h=frozenset(), _j={}, k=[], m=[], _n=nan)) kwargs = {} vals = ('', '', '', frozenset(), frozenset(), frozenset(), ...) tests/test_baseconverter.py:190: AssertionError ____________________________ test_simple_roundtrip _____________________________ @given(simple_typed_classes() | simple_typed_dataclasses(), booleans()) > def test_simple_roundtrip(cls_and_vals, detailed_validation): f = .run_test_as_given..wrapped_test at 0x7fadc9c22de0> tests/test_converter.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, (nan,), {}) detailed_validation = False @given(simple_typed_classes() | simple_typed_dataclasses(), booleans()) def test_simple_roundtrip(cls_and_vals, detailed_validation): """ Simple classes with metadata can be unstructured and restructured. """ converter = Converter(detailed_validation=detailed_validation) cl, vals, kwargs = cls_and_vals inst = cl(*vals, **kwargs) unstructured = converter.unstructure(inst) assert "Hyp" not in repr(unstructured) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypAttrsClass(a=nan) == HypAttrsClass(a=nan) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_simple_roundtrip( E cls_and_vals=(tests.typed.HypAttrsClass, E (struct.unpack('d', struct.pack('Q', 0x7ff8000000000001))[0],), E {}), E detailed_validation=False, # or any other generated value E ) cl = cls_and_vals = (, (nan,), {}) converter = detailed_validation = False inst = HypAttrsClass(a=nan) kwargs = {} unstructured = {'a': nan} vals = (nan,) tests/test_converter.py:50: AssertionError _________________________ test_simple_roundtrip_tuple __________________________ @given( > simple_typed_classes(kw_only=False, newtypes=False) | simple_typed_dataclasses(newtypes=False), booleans(), ) f = .run_test_as_given..wrapped_test at 0x7fadc9c232e0> tests/test_converter.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ({}, {}, {}, [], nan), {}) dv = False @given( simple_typed_classes(kw_only=False, newtypes=False) | simple_typed_dataclasses(newtypes=False), booleans(), ) def test_simple_roundtrip_tuple(cls_and_vals, dv: bool): """ Simple classes with metadata can be unstructured and restructured. """ converter = Converter( unstruct_strat=UnstructureStrategy.AS_TUPLE, detailed_validation=dv ) cl, vals, _ = cls_and_vals inst = cl(*vals) unstructured = converter.unstructure(inst) assert "Hyp" not in repr(unstructured) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypAttrsClass..., e=[], g=nan) == HypAttrsClass..., e=[], g=nan) E E Omitting 4 identical items, use -vv to show E Differing attributes: E ['g'] E E Drill down into differing attribute g: E g: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_simple_roundtrip_tuple( E cls_and_vals=(tests.typed.HypAttrsClass, ({}, {}, {}, [], nan), {}), E dv=False, # or any other generated value E ) _ = {} cl = cls_and_vals = (, ({}, {}, {}, [], nan), {}) converter = dv = False inst = HypAttrsClass(a={}, _b={}, _d={}, e=[], g=nan) unstructured = ({}, {}, {}, [], nan) vals = ({}, {}, {}, [], nan) tests/test_converter.py:69: AssertionError _____________________ test_simple_roundtrip_defaults_tuple _____________________ @given(simple_typed_attrs(defaults=True, kw_only=False, newtypes=False)) > def test_simple_roundtrip_defaults_tuple(attr_and_vals): f = .run_test_as_given..wrapped_test at 0x7fadc9c23b00> tests/test_converter.py:88: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attr_and_vals = (_CountingAttr(counter=115116, _default=nan, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), floats()) @given(simple_typed_attrs(defaults=True, kw_only=False, newtypes=False)) def test_simple_roundtrip_defaults_tuple(attr_and_vals): """ Simple classes with metadata can be unstructured and restructured. """ a, _ = attr_and_vals cl = make_class("HypClass", {"a": a}) converter = Converter(unstruct_strat=UnstructureStrategy.AS_TUPLE) inst = cl() assert converter.unstructure(converter.structure({}, cl)) == converter.unstructure( inst ) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypClass(a=nan) == HypClass(a=nan) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: nan != nan E Falsifying example: test_simple_roundtrip_defaults_tuple( E attr_and_vals=(_CountingAttr(counter=115116, E _default=nan, E repr=True, E eq=True, E order=True, E hash=None, E init=True, E on_setattr=None, E alias=None, E metadata={}), E floats()), E ) _ = floats() a = _CountingAttr(counter=115116, _default=nan, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}) attr_and_vals = (_CountingAttr(counter=115116, _default=nan, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), floats()) cl = converter = inst = HypClass(a=nan) tests/test_converter.py:99: AssertionError _______________ test_simple_roundtrip_with_extra_keys_forbidden ________________ @given( > simple_typed_classes(newtypes=False) | simple_typed_dataclasses(newtypes=False), unstructure_strats, ) f = .run_test_as_given..wrapped_test at 0x7fadc9c280e0> tests/test_converter.py:103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ('', nan), {}) strat = @given( simple_typed_classes(newtypes=False) | simple_typed_dataclasses(newtypes=False), unstructure_strats, ) def test_simple_roundtrip_with_extra_keys_forbidden(cls_and_vals, strat): """ Simple classes can be unstructured and restructured with forbid_extra_keys=True. """ converter = Converter(unstruct_strat=strat, forbid_extra_keys=True) cl, vals, kwargs = cls_and_vals assume(strat is UnstructureStrategy.AS_DICT or not kwargs) inst = cl(*vals, **kwargs) unstructured = converter.unstructure(inst) assert "Hyp" not in repr(unstructured) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypAttrsClass(a='', _b=nan) == HypAttrsClass(a='', _b=nan) E E Omitting 1 identical items, use -vv to show E Differing attributes: E ['_b'] E E Drill down into differing attribute _b: E _b: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={})} E Falsifying example: test_simple_roundtrip_with_extra_keys_forbidden( E cls_and_vals=(tests.typed.HypAttrsClass, ('', nan), {}), E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) cl = cls_and_vals = (, ('', nan), {}) converter = inst = HypAttrsClass(a='', _b=nan) kwargs = {} strat = unstructured = {'_b': nan, 'a': ''} vals = ('', nan) tests/test_converter.py:116: AssertionError ____________________________ test_nested_roundtrip _____________________________ @given(nested_typed_classes(defaults=True, min_attrs=1), booleans()) > def test_nested_roundtrip(cls_and_vals, omit_if_default): f = .run_test_as_given..wrapped_test at 0x7fadc9c28540> tests/test_converter.py:203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, (0, nan), {}) omit_if_default = False @given(nested_typed_classes(defaults=True, min_attrs=1), booleans()) def test_nested_roundtrip(cls_and_vals, omit_if_default): """ Nested classes with metadata can be unstructured and restructured. """ converter = Converter(omit_if_default=omit_if_default) cl, vals, kwargs = cls_and_vals # Vals are a tuple, convert into a dictionary. inst = cl(*vals, **kwargs) unstructured = converter.unstructure(inst) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypClass(a=0, _b=nan) == HypClass(a=0, _b=nan) E E Omitting 1 identical items, use -vv to show E Differing attributes: E ['_b'] E E Drill down into differing attribute _b: E _b: nan != nan E Falsifying example: test_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, (0, nan), {}), E omit_if_default=False, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 cl = cls_and_vals = (, (0, nan), {}) converter = inst = HypClass(a=0, _b=nan) kwargs = {} omit_if_default = False unstructured = {'_b': nan, 'a': 0} vals = (0, nan) tests/test_converter.py:212: AssertionError _________________________ test_nested_roundtrip_tuple __________________________ @given( > nested_typed_classes(defaults=True, min_attrs=1, kw_only=False, newtypes=False), booleans(), ) f = .run_test_as_given..wrapped_test at 0x7fadc9c289a0> tests/test_converter.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=0, _b='', c={}, _d=nan)],), {}) omit_if_default = False @given( nested_typed_classes(defaults=True, min_attrs=1, kw_only=False, newtypes=False), booleans(), ) def test_nested_roundtrip_tuple(cls_and_vals, omit_if_default: bool): """ Nested classes with metadata can be unstructured and restructured. """ converter = Converter( unstruct_strat=UnstructureStrategy.AS_TUPLE, omit_if_default=omit_if_default ) cl, vals, _ = cls_and_vals # Vals are a tuple, convert into a dictionary. inst = cl(*vals) unstructured = converter.unstructure(inst) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypClass(a=[H...={}, _d=nan)]) == HypClass(a=[H...={}, _d=nan)]) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: [HypClass(a=0, _b='', c={}, _d=nan)] != [HypClass(a=0, _b='', c={}, _d=nan)] E At index 0 diff: HypClass(a=0, _b='', c={}, _d=nan) != HypClass(a=0, _b='', c={}, _d=nan)... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Falsifying example: test_nested_roundtrip_tuple( E cls_and_vals=(tests.typed.HypClass, E ([HypClass(a=0, _b='', c={}, _d=nan)],), E {}), E omit_if_default=False, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3.12/difflib.py:490 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:103 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:112 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:474 E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 E (and 2 more with settings.verbosity >= verbose) _ = {} cl = cls_and_vals = (, ([HypClass(a=0, _b='', c={}, _d=nan)],), {}) converter = inst = HypClass(a=[HypClass(a=0, _b='', c={}, _d=nan)]) omit_if_default = False unstructured = ([(0, '', {}, nan)],) vals = ([HypClass(a=0, _b='', c={}, _d=nan)],) tests/test_converter.py:230: AssertionError __________________________ test_union_field_roundtrip __________________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341, in from_call | result: TResult | None = func() | ^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 242, in | lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 182, in _multicall | return outcome.get_result() | ^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_result.py", line 100, in get_result | raise exc.with_traceback(exc.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call | yield from thread_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call | yield from unraisable_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 846, in pytest_runtest_call | yield from self._runtest_for(item, "call") | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 829, in _runtest_for | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/capture.py", line 880, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/skipping.py", line 257, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 174, in pytest_runtest_call | item.runtest() | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1627, in runtest | self.ihook.pytest_pyfunc_call(pyfuncitem=self) | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall | raise exception.with_traceback(exception.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 159, in pytest_pyfunc_call | result = testfunction(**testargs) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_converter.py", line 234, in test_union_field_roundtrip | @given( | | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1758, in wrapped_test | raise the_error_hypothesis_found | ExceptionGroup: Hypothesis found 2 distinct failures. (2 sub-exceptions) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_converter.py", line 274, in test_union_field_roundtrip | assert inst == converter.structure(unstructured, C) | AssertionError: assert C(a=HypAttrsC..., g={}, _h=0)) == C(a=HypAttrsC..., g={}, _h=0)) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d='', e=nan, g={}, _h=0) != HypAttrsClass(a=0, _b=0, _d='', e=nan, g={}, _h=0) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, (0, 0, '', nan, {}, 0), {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_TUPLE, # or any other generated value | ) +---------------- 2 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_converter.py", line 263, in test_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(unstructured), C) | AssertionError: assert C(a=HypAttrsC..., g={}, _h=0)) == C(a=HypAttrsC..., g={}, _h=0)) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d='', e=nan, g={}, _h=0) != HypAttrsClass(a=0, _b=0, _d='', e=nan, g={}, _h=0) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, (0, 0, '', nan, {}, 0), {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_DICT, # or any other generated value | ) +------------------------------------ ________________________ test_310_union_field_roundtrip ________________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341, in from_call | result: TResult | None = func() | ^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 242, in | lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 182, in _multicall | return outcome.get_result() | ^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_result.py", line 100, in get_result | raise exc.with_traceback(exc.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call | yield from thread_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call | yield from unraisable_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 846, in pytest_runtest_call | yield from self._runtest_for(item, "call") | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 829, in _runtest_for | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/capture.py", line 880, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | File "/usr/lib/python3/dist-packages/_pytest/skipping.py", line 257, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 174, in pytest_runtest_call | item.runtest() | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1627, in runtest | self.ihook.pytest_pyfunc_call(pyfuncitem=self) | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall | raise exception.with_traceback(exception.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 159, in pytest_pyfunc_call | result = testfunction(**testargs) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_converter.py", line 278, in test_310_union_field_roundtrip | @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) | ^^^ | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1758, in wrapped_test | raise the_error_hypothesis_found | ExceptionGroup: Hypothesis found 2 distinct failures. (2 sub-exceptions) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_converter.py", line 319, in test_310_union_field_roundtrip | assert inst == converter.structure(unstructured, C) | AssertionError: assert C(a=HypAttrsC...=frozenset())) == C(a=HypAttrsC...=frozenset())) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d='', e=nan, g=frozenset(), _h=frozenset()) != HypAttrsClass(a=0, _b=0, _d='', e=nan, g=frozenset(), _h=frozenset()) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_310_union_field_roundtrip( | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, | 0, | '', | struct.unpack('d', struct.pack('Q', 0x7ff7fffffffffff7))[0], | frozenset(), | frozenset()), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, (None,), {}), | strat=UnstructureStrategy.AS_TUPLE, | ) +---------------- 2 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/test_converter.py", line 308, in test_310_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(unstructured), C) | AssertionError: assert C(a=HypAttrsC...=frozenset())) == C(a=HypAttrsC...=frozenset())) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d='', e=nan, g=frozenset(), _h=frozenset()) != HypAttrsClass(a=0, _b=0, _d='', e=nan, g=frozenset(), _h=frozenset()) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_310_union_field_roundtrip( | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, | 0, | '', | struct.unpack('d', struct.pack('Q', 0x7ff7fffffffffff6))[0], | frozenset(), | frozenset()), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, (None,), {}), | strat=UnstructureStrategy.AS_DICT, | ) +------------------------------------ ---------------------------------- Hypothesis ---------------------------------- WARNING: Hypothesis has spent more than five minutes working to shrink a failing example, and stopped because it is making very slow progress. When you re-run your tests, shrinking will resume and may take this long before aborting again. PLEASE REPORT THIS if you can provide a reproducing example, so that we can improve shrinking performance for everyone. ________________________ test_optional_field_roundtrip _________________________ @given(simple_typed_classes(defaults=False)) > def test_optional_field_roundtrip(cl_and_vals): f = .run_test_as_given..wrapped_test at 0x7fadc9c296c0> tests/test_converter.py:323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}) @given(simple_typed_classes(defaults=False)) def test_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = Converter() cl, vals, kwargs = cl_and_vals @define class C: a: Optional[cl] inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsClass(a=nan)) == C(a=HypAttrsClass(a=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=nan) != HypAttrsClass(a=nan) E ... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, (nan,), {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> cl = cl_and_vals = (, (nan,), {}) converter = inst = C(a=HypAttrsClass(a=nan)) kwargs = {} vals = (nan,) tests/test_converter.py:335: AssertionError ______________________ test_310_optional_field_roundtrip _______________________ @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") > @given(simple_typed_classes(defaults=False)) f = .run_test_as_given..wrapped_test at 0x7fadc9c29b20> tests/test_converter.py:344: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}) @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") @given(simple_typed_classes(defaults=False)) def test_310_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = Converter() cl, vals, kwargs = cl_and_vals @define class C: a: cl | None inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsClass(a=nan)) == C(a=HypAttrsClass(a=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=nan) != HypAttrsClass(a=nan) E ... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_310_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, (nan,), {}), E ) C = .C'> cl = cl_and_vals = (, (nan,), {}) converter = inst = C(a=HypAttrsClass(a=nan)) kwargs = {} vals = (nan,) tests/test_converter.py:357: AssertionError _________________________ test_omit_default_roundtrip __________________________ @given(simple_typed_classes(defaults=True)) > def test_omit_default_roundtrip(cl_and_vals): f = .run_test_as_given..wrapped_test at 0x7fadc9c28860> tests/test_converter.py:366: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (0, 0, 0, 0, '', '', ...), {}) @given(simple_typed_classes(defaults=True)) def test_omit_default_roundtrip(cl_and_vals): """ Omit default on the converter works. """ converter = Converter(omit_if_default=True) cl, vals, kwargs = cl_and_vals @define class C: a: int = 1 b: cl = Factory(lambda: cl(*vals, **kwargs)) inst = C() unstructured = converter.unstructure(inst) > assert unstructured == {} E AssertionError: assert {'b': {'_v': nan}} == {} E E Left contains 1 more item: E {'b': {'_v': nan}} E E Full diff: E - {} E + {... E E ...Full output truncated (4 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default='', repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default='', repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=frozenset(), repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=7, _default=('', '', ''), repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=8, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=9, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=10, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=11, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=12, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=13, _default=[], repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=14, _default=0.0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default='', repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default='', repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=frozenset(), repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'k': _CountingAttr(counter=7, _default=('', '', ''), repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_l', metadata={}), 'm': _CountingAttr(counter=8, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_n': _CountingAttr(counter=9, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='o', metadata={}), '_p': _CountingAttr(counter=10, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'q': _CountingAttr(counter=11, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_r', metadata={}), 's': _CountingAttr(counter=12, _default={}, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_t': _CountingAttr(counter=13, _default=[], repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='u', metadata={}), '_v': _CountingAttr(counter=14, _default=0.0, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_omit_default_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, E (0, E 0, E 0, E 0, E '', E '', E frozenset(), E ('', '', ''), E {}, E {}, E {}, E {}, E {}, E [], E nan), E {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3.12/pprint.py:197 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:128 C = .C'> cl = cl_and_vals = (, (0, 0, 0, 0, '', '', ...), {}) converter = inst = C(a=1, b=HypAttrsClass(a=0, _b=0, _d=0, e=0, g='', _h='', _j=frozenset(), k=('', '', ''), m={}, _n={}, _p={}, q={}, s={}, _t=[], _v=nan)) kwargs = {} unstructured = {'b': {'_v': nan}} vals = (0, 0, 0, 0, '', '', ...) tests/test_converter.py:380: AssertionError ________________________________ test_renaming _________________________________ @given( > simple_typed_classes(min_attrs=1) | simple_typed_dataclasses(min_attrs=1), data() ) f = .run_test_as_given..wrapped_test at 0x7fadc9a25bc0> tests/test_gen_dict.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}) data = data(...) @given( simple_typed_classes(min_attrs=1) | simple_typed_dataclasses(min_attrs=1), data() ) def test_renaming(cl_and_vals, data): converter = Converter() cl, vals, kwargs = cl_and_vals attrs = fields(cl) to_replace = data.draw(sampled_from(attrs)) u_fn = make_dict_unstructure_fn( cl, converter, **{to_replace.name: override(rename="class")} ) s_fn = make_dict_structure_fn( cl, converter, **{to_replace.name: override(rename="class")} ) converter.register_structure_hook(cl, s_fn) converter.register_unstructure_hook(cl, u_fn) inst = cl(*vals, **kwargs) raw = converter.unstructure(inst) assert "class" in raw new_inst = converter.structure(raw, cl) > assert inst == new_inst E AssertionError: assert HypAttrsClass(a=nan) == HypAttrsClass(a=nan) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_renaming( E cl_and_vals=(tests.typed.HypAttrsClass, (nan,), {}), E data=data(...), E ) E Draw 1: Attribute(name='a', default=NOTHING, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=None, init=True, metadata=mappingproxy({}), type=, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a') attrs = (Attribute(name='a', default=NOTHING, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, has...a=mappingproxy({}), type=, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a'),) cl = cl_and_vals = (, (nan,), {}) converter = data = data(...) inst = HypAttrsClass(a=nan) kwargs = {} new_inst = HypAttrsClass(a=nan) raw = {'class': nan} s_fn = to_replace = Attribute(name='a', default=NOTHING, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash...ata=mappingproxy({}), type=, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a') u_fn = vals = (nan,) tests/test_gen_dict.py:217: AssertionError ___________________ test_structure_simple_from_dict_default ____________________ @given(simple_classes(defaults=True, min_attrs=1, frozen=False), data()) > def test_structure_simple_from_dict_default(cl_and_vals, data): f = .run_test_as_given..wrapped_test at 0x7fadc98e8220> tests/test_structure_attrs.py:31: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (None, None, None, 0, 0.0), {}) data = data(...) @given(simple_classes(defaults=True, min_attrs=1, frozen=False), data()) def test_structure_simple_from_dict_default(cl_and_vals, data): """Test structuring non-nested attrs classes with default value.""" converter = BaseConverter() cl, vals, kwargs = cl_and_vals obj = cl(*vals, **kwargs) attrs_with_defaults = [a for a in fields(cl) if a.default is not NOTHING] to_remove = data.draw( lists(elements=sampled_from(attrs_with_defaults), unique=True) ) for a in to_remove: if isinstance(a.default, Factory): setattr(obj, a.name, a.default.factory()) else: setattr(obj, a.name, a.default) dumped = asdict(obj) for a in to_remove: del dumped[a.name] > assert obj == converter.structure(dumped, cl) E AssertionError: assert HypClass(a=No..., _d=0, e=nan) == HypClass(a=No..., _d=0, e=nan) E E Omitting 4 identical items, use -vv to show E Differing attributes: E ['e'] E E Drill down into differing attribute e: E e: nan != nan E Falsifying example: test_structure_simple_from_dict_default( E cl_and_vals=(tests.untyped.HypClass, (None, None, None, 0, 0.0), {}), E data=data(...), E ) E Draw 1: [Attribute(name='e', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=None, init=True, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='e')] a = Attribute(name='e', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=Non...True, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='e') attrs_with_defaults = [Attribute(name='a', default=None, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=N...rue, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='e')] cl = cl_and_vals = (, (None, None, None, 0, 0.0), {}) converter = data = data(...) dumped = {'_b': None, '_d': 0, 'a': None, 'c': None} kwargs = {} obj = HypClass(a=None, _b=None, c=None, _d=0, e=nan) to_remove = [Attribute(name='e', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=No...rue, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='e')] vals = (None, None, None, 0, 0.0) tests/test_structure_attrs.py:52: AssertionError =============================== warnings summary =============================== tests/typed.py:417 /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/typed.py:417: HypothesisWarning: Return-type annotation is `st.SearchStrategy[typing.Tuple[attr._make._CountingAttr, st.SearchStrategy]]`, but the decorated function should return a value (not a strategy) @composite tests/typed.py:826 /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build/tests/typed.py:826: HypothesisWarning: Return-type annotation is `st.SearchStrategy[typing.Tuple[typing.Type, st.SearchStrategy[typing.Tuple[typing.Any]], st.SearchStrategy[typing.Dict[str, typing.Any]]]]`, but the decorated function should return a value (not a strategy) @composite -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_baseconverter.py::test_simple_roundtrip - AssertionError: a... FAILED tests/test_baseconverter.py::test_nested_roundtrip - AssertionError: a... FAILED tests/test_baseconverter.py::test_nested_roundtrip_tuple - AssertionEr... FAILED tests/test_baseconverter.py::test_union_field_roundtrip - ExceptionGro... FAILED tests/test_baseconverter.py::test_310_union_field_roundtrip - Assertio... FAILED tests/test_baseconverter.py::test_optional_field_roundtrip - Assertion... FAILED tests/test_baseconverter.py::test_310_optional_field_roundtrip - Asser... FAILED tests/test_converter.py::test_simple_roundtrip - AssertionError: asser... FAILED tests/test_converter.py::test_simple_roundtrip_tuple - AssertionError:... FAILED tests/test_converter.py::test_simple_roundtrip_defaults_tuple - Assert... FAILED tests/test_converter.py::test_simple_roundtrip_with_extra_keys_forbidden FAILED tests/test_converter.py::test_nested_roundtrip - AssertionError: asser... FAILED tests/test_converter.py::test_nested_roundtrip_tuple - AssertionError:... FAILED tests/test_converter.py::test_union_field_roundtrip - ExceptionGroup: ... FAILED tests/test_converter.py::test_310_union_field_roundtrip - ExceptionGro... FAILED tests/test_converter.py::test_optional_field_roundtrip - AssertionErro... FAILED tests/test_converter.py::test_310_optional_field_roundtrip - Assertion... FAILED tests/test_converter.py::test_omit_default_roundtrip - AssertionError:... FAILED tests/test_gen_dict.py::test_renaming - AssertionError: assert HypAttr... FAILED tests/test_structure_attrs.py::test_structure_simple_from_dict_default ===== 20 failed, 557 passed, 15 xfailed, 2 warnings in 1566.29s (0:26:06) ====== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build; python3.12 -m pytest -v --ignore tests/test_unstructure_collections.py --ignore tests/test_preconf.py -k 'not test_orjson' I: pybuild base:311: cd /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build; python3.13 -m pytest -v --ignore tests/test_unstructure_collections.py --ignore tests/test_preconf.py -k 'not test_orjson' ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 -- /usr/bin/python3.13 cachedir: .pytest_cache benchmark: 5.1.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=True warmup_iterations=5) hypothesis profile 'tests' -> deadline=None, suppress_health_check=[HealthCheck.too_slow], database=DirectoryBasedExampleDatabase(PosixPath('/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build/.hypothesis/examples')) rootdir: /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build configfile: pyproject.toml plugins: benchmark-5.1.0, hypothesis-6.122.1, typeguard-4.4.1 collecting ... collected 592 items tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_structure-_unstructure] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_structure-_undefined] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_structure-None] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_undefined-_unstructure] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_undefined-_undefined] PASSED [ 0%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-_undefined-None] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-None-_unstructure] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-None-_undefined] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Structure-None-None] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_structure-_unstructure] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_structure-_undefined] PASSED [ 1%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_structure-None] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_undefined-_unstructure] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_undefined-_undefined] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-_undefined-None] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-None-_unstructure] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-None-_undefined] PASSED [ 2%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Unstructure-None-None] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_structure-_unstructure] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_structure-_undefined] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_structure-None] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_undefined-_unstructure] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_undefined-_undefined] PASSED [ 3%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-_undefined-None] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-None-_unstructure] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-None-_undefined] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-True-Both-None-None] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_structure-_unstructure] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_structure-_undefined] PASSED [ 4%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_structure-None] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_undefined-_unstructure] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_undefined-_undefined] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-_undefined-None] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-None-_unstructure] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-None-_undefined] PASSED [ 5%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Structure-None-None] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_structure-_unstructure] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_structure-_undefined] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_structure-None] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_undefined-_unstructure] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_undefined-_undefined] PASSED [ 6%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-_undefined-None] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-None-_unstructure] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-None-_undefined] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Unstructure-None-None] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_structure-_unstructure] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_structure-_undefined] PASSED [ 7%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_structure-None] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_undefined-_unstructure] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_undefined-_undefined] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-_undefined-None] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-None-_unstructure] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-None-_undefined] PASSED [ 8%] tests/strategies/test_class_methods.py::test_not_nested[BaseConverter-False-Both-None-None] PASSED [ 9%] tests/strategies/test_native_unions.py::test_only_primitives[BaseConverter-True] PASSED [ 9%] tests/strategies/test_native_unions.py::test_only_primitives[BaseConverter-False] PASSED [ 9%] tests/strategies/test_native_unions.py::test_literals[BaseConverter-True] PASSED [ 9%] tests/strategies/test_native_unions.py::test_literals[BaseConverter-False] PASSED [ 9%] tests/strategies/test_native_unions.py::test_spillover[BaseConverter-True] PASSED [ 9%] tests/strategies/test_native_unions.py::test_spillover[BaseConverter-False] PASSED [ 10%] tests/strategies/test_native_unions.py::test_multiple_spillover[BaseConverter-True] PASSED [ 10%] tests/strategies/test_native_unions.py::test_multiple_spillover[BaseConverter-False] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_defaults[BaseConverter-True] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_defaults[BaseConverter-False] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_tag_name[BaseConverter-True] PASSED [ 10%] tests/strategies/test_tagged_unions.py::test_tag_name[BaseConverter-False] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator[BaseConverter-True] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator[BaseConverter-False] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[BaseConverter-True] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[BaseConverter-False] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_default_member[BaseConverter-True] PASSED [ 11%] tests/strategies/test_tagged_unions.py::test_default_member[BaseConverter-False] PASSED [ 12%] tests/strategies/test_tagged_unions.py::test_default_member_validation[BaseConverter-True] PASSED [ 12%] tests/strategies/test_tagged_unions.py::test_default_member_validation[BaseConverter-False] PASSED [ 12%] tests/test_any.py::test_unstructuring_dict_of_any[BaseConverter-True] PASSED [ 12%] tests/test_any.py::test_unstructuring_dict_of_any[BaseConverter-False] PASSED [ 12%] tests/test_converter.py::test_unstructure_fallbacks[BaseConverter] PASSED [ 13%] tests/test_converter.py::test_structure_fallbacks[BaseConverter] PASSED [ 13%] tests/test_converter.py::test_fallback_chaining[BaseConverter] PASSED [ 13%] tests/test_converter_inheritance.py::test_inheritance[BaseConverter-True] PASSED [ 13%] tests/test_converter_inheritance.py::test_inheritance[BaseConverter-False] PASSED [ 13%] tests/test_converter_inheritance.py::test_gen_hook_priority[BaseConverter-True] PASSED [ 13%] tests/test_converter_inheritance.py::test_gen_hook_priority[BaseConverter-False] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-True-Hashable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-True-Iterable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-True-Reversible] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-False-Hashable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-False-Iterable] PASSED [ 14%] tests/test_converter_inheritance.py::test_inherit_typing[BaseConverter-False-Reversible] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-True-Hashable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-True-Iterable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-True-Reversible] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-False-Hashable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-False-Iterable] PASSED [ 15%] tests/test_converter_inheritance.py::test_inherit_collections_abc[BaseConverter-False-Reversible] PASSED [ 16%] tests/test_copy.py::test_deepcopy[BaseConverter] PASSED [ 16%] tests/test_copy.py::test_copy[BaseConverter] PASSED [ 16%] tests/test_copy.py::test_copy_hooks[BaseConverter] PASSED [ 16%] tests/test_copy.py::test_copy_func_hooks[BaseConverter] PASSED [ 16%] tests/test_dataclasses.py::test_dataclasses_in_attrs[BaseConverter-True] PASSED [ 16%] tests/test_dataclasses.py::test_dataclasses_in_attrs[BaseConverter-False] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses_in_container[BaseConverter-True] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses_in_container[BaseConverter-False] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses[BaseConverter-True] PASSED [ 17%] tests/test_dataclasses.py::test_dataclasses[BaseConverter-False] PASSED [ 17%] tests/test_disambiguators.py::test_converter_no_literals[BaseConverter-True] PASSED [ 17%] tests/test_disambiguators.py::test_converter_no_literals[BaseConverter-False] PASSED [ 18%] tests/test_factory_hooks.py::test_snake_to_camel[BaseConverter] PASSED [ 18%] tests/test_gen_dict.py::test_omitting[BaseConverter-True] PASSED [ 18%] tests/test_gen_dict.py::test_omitting[BaseConverter-False] PASSED [ 18%] tests/test_gen_dict.py::test_omitting_none[BaseConverter-True] PASSED [ 18%] tests/test_gen_dict.py::test_omitting_none[BaseConverter-False] PASSED [ 18%] tests/test_gen_dict.py::test_overriding_struct_hook[BaseConverter-True] PASSED [ 19%] tests/test_gen_dict.py::test_overriding_struct_hook[BaseConverter-False] PASSED [ 19%] tests/test_gen_dict.py::test_overriding_unstruct_hook[BaseConverter-True] PASSED [ 19%] tests/test_gen_dict.py::test_overriding_unstruct_hook[BaseConverter-False] PASSED [ 19%] tests/test_gen_dict.py::test_alias_keys[BaseConverter-True] PASSED [ 19%] tests/test_gen_dict.py::test_alias_keys[BaseConverter-False] PASSED [ 19%] tests/test_gen_dict.py::test_init_false[BaseConverter-True] PASSED [ 20%] tests/test_gen_dict.py::test_init_false[BaseConverter-False] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_overridden[BaseConverter-True] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_overridden[BaseConverter-False] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_field_override[BaseConverter-True] PASSED [ 20%] tests/test_gen_dict.py::test_init_false_field_override[BaseConverter-False] PASSED [ 20%] tests/test_gen_dict.py::test_detailed_validation_from_converter[BaseConverter-True] PASSED [ 21%] tests/test_gen_dict.py::test_detailed_validation_from_converter[BaseConverter-False] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-True-int-str-result0] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-True-str-str-result1] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-True-List-str-result2] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-False-int-str-result0] PASSED [ 21%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-False-str-str-result1] PASSED [ 22%] tests/test_generics.py::test_able_to_structure_generics[BaseConverter-False-List-str-result2] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-True-TClass-str-result0] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-True-List-str-result1] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-False-TClass-str-result0] PASSED [ 22%] tests/test_generics.py::test_structure_nested_generics[BaseConverter-False-List-str-result1] PASSED [ 22%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[BaseConverter-True] PASSED [ 23%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[BaseConverter-False] PASSED [ 23%] tests/test_generics.py::test_structure_unions_of_generics[BaseConverter-True] PASSED [ 23%] tests/test_generics.py::test_structure_unions_of_generics[BaseConverter-False] PASSED [ 23%] tests/test_generics.py::test_structure_list_of_generic_unions[BaseConverter-True] PASSED [ 23%] tests/test_generics.py::test_structure_list_of_generic_unions[BaseConverter-False] PASSED [ 23%] tests/test_generics.py::test_structure_deque_of_generic_unions[BaseConverter-True] PASSED [ 24%] tests/test_generics.py::test_structure_deque_of_generic_unions[BaseConverter-False] PASSED [ 24%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[BaseConverter-True] PASSED [ 24%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[BaseConverter-False] PASSED [ 24%] tests/test_generics.py::test_nongeneric_protocols[BaseConverter-True] PASSED [ 24%] tests/test_generics.py::test_nongeneric_protocols[BaseConverter-False] PASSED [ 25%] tests/test_optionals.py::test_optional_any[BaseConverter-True] PASSED [ 25%] tests/test_optionals.py::test_optional_any[BaseConverter-False] PASSED [ 25%] tests/test_typeddicts.py::test_detailed_validation_from_converter[BaseConverter-True] PASSED [ 25%] tests/test_typeddicts.py::test_detailed_validation_from_converter[BaseConverter-False] PASSED [ 25%] tests/test_unstructure.py::test_unstructure_hook_func[BaseConverter-True] PASSED [ 25%] tests/test_unstructure.py::test_unstructure_hook_func[BaseConverter-False] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_structure-_unstructure] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_structure-_undefined] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_structure-None] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_undefined-_unstructure] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_undefined-_undefined] PASSED [ 26%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-_undefined-None] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-None-_unstructure] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-None-_undefined] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Structure-None-None] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_structure-_unstructure] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_structure-_undefined] PASSED [ 27%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_structure-None] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_undefined-_unstructure] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_undefined-_undefined] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-_undefined-None] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-None-_unstructure] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-None-_undefined] PASSED [ 28%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Unstructure-None-None] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_structure-_unstructure] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_structure-_undefined] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_structure-None] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_undefined-_unstructure] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_undefined-_undefined] PASSED [ 29%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-_undefined-None] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-None-_unstructure] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-None-_undefined] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-True-Both-None-None] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_structure-_unstructure] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_structure-_undefined] PASSED [ 30%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_structure-None] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_undefined-_unstructure] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_undefined-_undefined] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-_undefined-None] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-None-_unstructure] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-None-_undefined] PASSED [ 31%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Structure-None-None] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_structure-_unstructure] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_structure-_undefined] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_structure-None] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_undefined-_unstructure] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_undefined-_undefined] PASSED [ 32%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-_undefined-None] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-None-_unstructure] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-None-_undefined] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Unstructure-None-None] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_structure-_unstructure] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_structure-_undefined] PASSED [ 33%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_structure-None] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_undefined-_unstructure] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_undefined-_undefined] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-_undefined-None] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-None-_unstructure] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-None-_undefined] PASSED [ 34%] tests/strategies/test_class_methods.py::test_not_nested[Converter-False-Both-None-None] PASSED [ 35%] tests/strategies/test_native_unions.py::test_only_primitives[Converter-True] PASSED [ 35%] tests/strategies/test_native_unions.py::test_only_primitives[Converter-False] PASSED [ 35%] tests/strategies/test_native_unions.py::test_literals[Converter-True] PASSED [ 35%] tests/strategies/test_native_unions.py::test_literals[Converter-False] PASSED [ 35%] tests/strategies/test_native_unions.py::test_spillover[Converter-True] PASSED [ 35%] tests/strategies/test_native_unions.py::test_spillover[Converter-False] PASSED [ 36%] tests/strategies/test_native_unions.py::test_multiple_spillover[Converter-True] PASSED [ 36%] tests/strategies/test_native_unions.py::test_multiple_spillover[Converter-False] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_defaults[Converter-True] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_defaults[Converter-False] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_tag_name[Converter-True] PASSED [ 36%] tests/strategies/test_tagged_unions.py::test_tag_name[Converter-False] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator[Converter-True] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator[Converter-False] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[Converter-True] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_tag_generator_dict[Converter-False] PASSED [ 37%] tests/strategies/test_tagged_unions.py::test_default_member[Converter-True] PASSED [ 38%] tests/strategies/test_tagged_unions.py::test_default_member[Converter-False] PASSED [ 38%] tests/strategies/test_tagged_unions.py::test_default_member_validation[Converter-True] PASSED [ 38%] tests/strategies/test_tagged_unions.py::test_default_member_validation[Converter-False] PASSED [ 38%] tests/test_any.py::test_unstructuring_dict_of_any[Converter-True] PASSED [ 38%] tests/test_any.py::test_unstructuring_dict_of_any[Converter-False] PASSED [ 38%] tests/test_converter.py::test_unstructure_fallbacks[Converter] PASSED [ 39%] tests/test_converter.py::test_structure_fallbacks[Converter] PASSED [ 39%] tests/test_converter.py::test_fallback_chaining[Converter] PASSED [ 39%] tests/test_converter_inheritance.py::test_inheritance[Converter-True] PASSED [ 39%] tests/test_converter_inheritance.py::test_inheritance[Converter-False] PASSED [ 39%] tests/test_converter_inheritance.py::test_gen_hook_priority[Converter-True] PASSED [ 39%] tests/test_converter_inheritance.py::test_gen_hook_priority[Converter-False] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-True-Hashable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-True-Iterable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-True-Reversible] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-False-Hashable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-False-Iterable] PASSED [ 40%] tests/test_converter_inheritance.py::test_inherit_typing[Converter-False-Reversible] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-True-Hashable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-True-Iterable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-True-Reversible] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-False-Hashable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-False-Iterable] PASSED [ 41%] tests/test_converter_inheritance.py::test_inherit_collections_abc[Converter-False-Reversible] PASSED [ 42%] tests/test_copy.py::test_deepcopy[Converter] PASSED [ 42%] tests/test_copy.py::test_copy[Converter] PASSED [ 42%] tests/test_copy.py::test_copy_hooks[Converter] PASSED [ 42%] tests/test_copy.py::test_copy_func_hooks[Converter] PASSED [ 42%] tests/test_dataclasses.py::test_dataclasses_in_attrs[Converter-True] PASSED [ 42%] tests/test_dataclasses.py::test_dataclasses_in_attrs[Converter-False] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses_in_container[Converter-True] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses_in_container[Converter-False] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses[Converter-True] PASSED [ 43%] tests/test_dataclasses.py::test_dataclasses[Converter-False] PASSED [ 43%] tests/test_disambiguators.py::test_converter_no_literals[Converter-True] PASSED [ 43%] tests/test_disambiguators.py::test_converter_no_literals[Converter-False] PASSED [ 44%] tests/test_factory_hooks.py::test_snake_to_camel[Converter] PASSED [ 44%] tests/test_gen_dict.py::test_omitting[Converter-True] PASSED [ 44%] tests/test_gen_dict.py::test_omitting[Converter-False] PASSED [ 44%] tests/test_gen_dict.py::test_omitting_none[Converter-True] PASSED [ 44%] tests/test_gen_dict.py::test_omitting_none[Converter-False] PASSED [ 44%] tests/test_gen_dict.py::test_overriding_struct_hook[Converter-True] PASSED [ 45%] tests/test_gen_dict.py::test_overriding_struct_hook[Converter-False] PASSED [ 45%] tests/test_gen_dict.py::test_overriding_unstruct_hook[Converter-True] PASSED [ 45%] tests/test_gen_dict.py::test_overriding_unstruct_hook[Converter-False] PASSED [ 45%] tests/test_gen_dict.py::test_alias_keys[Converter-True] PASSED [ 45%] tests/test_gen_dict.py::test_alias_keys[Converter-False] PASSED [ 45%] tests/test_gen_dict.py::test_init_false[Converter-True] PASSED [ 46%] tests/test_gen_dict.py::test_init_false[Converter-False] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_overridden[Converter-True] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_overridden[Converter-False] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_field_override[Converter-True] PASSED [ 46%] tests/test_gen_dict.py::test_init_false_field_override[Converter-False] PASSED [ 46%] tests/test_gen_dict.py::test_detailed_validation_from_converter[Converter-True] PASSED [ 47%] tests/test_gen_dict.py::test_detailed_validation_from_converter[Converter-False] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-True-int-str-result0] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-True-str-str-result1] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-True-List-str-result2] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-False-int-str-result0] PASSED [ 47%] tests/test_generics.py::test_able_to_structure_generics[Converter-False-str-str-result1] PASSED [ 48%] tests/test_generics.py::test_able_to_structure_generics[Converter-False-List-str-result2] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-True-TClass-str-result0] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-True-List-str-result1] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-False-TClass-str-result0] PASSED [ 48%] tests/test_generics.py::test_structure_nested_generics[Converter-False-List-str-result1] PASSED [ 48%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[Converter-True] PASSED [ 49%] tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen[Converter-False] PASSED [ 49%] tests/test_generics.py::test_structure_unions_of_generics[Converter-True] PASSED [ 49%] tests/test_generics.py::test_structure_unions_of_generics[Converter-False] PASSED [ 49%] tests/test_generics.py::test_structure_list_of_generic_unions[Converter-True] PASSED [ 49%] tests/test_generics.py::test_structure_list_of_generic_unions[Converter-False] PASSED [ 50%] tests/test_generics.py::test_structure_deque_of_generic_unions[Converter-True] PASSED [ 50%] tests/test_generics.py::test_structure_deque_of_generic_unions[Converter-False] PASSED [ 50%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[Converter-True] PASSED [ 50%] tests/test_generics.py::test_raises_if_no_generic_params_supplied[Converter-False] PASSED [ 50%] tests/test_generics.py::test_nongeneric_protocols[Converter-True] PASSED [ 50%] tests/test_generics.py::test_nongeneric_protocols[Converter-False] PASSED [ 51%] tests/test_optionals.py::test_optional_any[Converter-True] PASSED [ 51%] tests/test_optionals.py::test_optional_any[Converter-False] PASSED [ 51%] tests/test_typeddicts.py::test_detailed_validation_from_converter[Converter-True] PASSED [ 51%] tests/test_typeddicts.py::test_detailed_validation_from_converter[Converter-False] PASSED [ 51%] tests/test_unstructure.py::test_unstructure_hook_func[Converter-True] PASSED [ 51%] tests/test_unstructure.py::test_unstructure_hook_func[Converter-False] PASSED [ 52%] tests/strategies/test_class_methods.py::test_nested_roundtrip PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-parent-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child1-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child2-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-grandchild-only] PASSED [ 52%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-parent] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-child] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-grandchild] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-parent] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-child] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-grandchild] PASSED [ 53%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-container] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-container] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-parent-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-child1-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-child2-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-grandchild-only] PASSED [ 54%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-parent] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-child] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-grandchild] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-parent] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-child] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-grandchild] PASSED [ 55%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-union-container] PASSED [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-and-tagged-union-non-union-container] PASSED [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-parent-only] PASSED [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-child1-only] XFAIL [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-child2-only] XFAIL [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-grandchild-only] XFAIL [ 56%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-compose-parent] PASSED [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-compose-child] PASSED [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-compose-grandchild] PASSED [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-compose-parent] XFAIL [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-compose-child] XFAIL [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-compose-grandchild] XFAIL [ 57%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-union-container] PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[wo-subclasses-non-union-container] XFAIL [ 58%] tests/strategies/test_include_subclasses.py::test_structure_as_union PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses] PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses-and-tagged-union] PASSED [ 58%] tests/strategies/test_include_subclasses.py::test_circular_reference[wo-subclasses] XFAIL [ 58%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-parent-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child1-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child2-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-grandchild-only] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-parent] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-child] PASSED [ 59%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-grandchild] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-parent] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-child] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-grandchild] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-container] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-container] PASSED [ 60%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-parent-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-child1-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-child2-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-grandchild-only] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-parent] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-child] PASSED [ 61%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-compose-grandchild] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-parent] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-child] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-compose-grandchild] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-union-container] PASSED [ 62%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-and-tagged-union-non-union-container] PASSED [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-parent-only] PASSED [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-child1-only] XFAIL [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-child2-only] XFAIL [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-grandchild-only] XFAIL [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-compose-parent] PASSED [ 63%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-compose-child] PASSED [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-compose-grandchild] PASSED [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-compose-parent] XFAIL [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-compose-child] XFAIL [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-compose-grandchild] XFAIL [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-union-container] PASSED [ 64%] tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[wo-subclasses-non-union-container] XFAIL [ 65%] tests/strategies/test_include_subclasses.py::test_structuring_unstructuring_unknown_subclass PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_structuring_with_subclasses_argument PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-parent-only] PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-child1-only] PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-child2-only] PASSED [ 65%] tests/strategies/test_include_subclasses.py::test_overrides[with-union-strategy-grandchild-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-parent-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child1-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child2-only] PASSED [ 66%] tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-grandchild-only] PASSED [ 66%] tests/strategies/test_native_unions.py::test_skip_optionals PASSED [ 66%] tests/strategies/test_tagged_unions.py::test_forbid_extra_keys PASSED [ 67%] tests/strategies/test_tagged_unions.py::test_forbid_extra_keys_default PASSED [ 67%] tests/strategies/test_tagged_unions.py::test_nested_sequence_union PASSED [ 67%] tests/test_baseconverter.py::test_simple_roundtrip FAILED [ 67%] tests/test_baseconverter.py::test_simple_roundtrip_defaults PASSED [ 67%] tests/test_baseconverter.py::test_nested_roundtrip FAILED [ 67%] tests/test_baseconverter.py::test_nested_roundtrip_tuple FAILED [ 68%] tests/test_baseconverter.py::test_union_field_roundtrip FAILED [ 68%] tests/test_baseconverter.py::test_310_union_field_roundtrip FAILED [ 68%] tests/test_baseconverter.py::test_optional_field_roundtrip FAILED [ 68%] tests/test_baseconverter.py::test_310_optional_field_roundtrip FAILED [ 68%] tests/test_converter.py::test_simple_roundtrip PASSED [ 68%] tests/test_converter.py::test_simple_roundtrip_tuple FAILED [ 69%] tests/test_converter.py::test_simple_roundtrip_defaults PASSED [ 69%] tests/test_converter.py::test_simple_roundtrip_defaults_tuple PASSED [ 69%] tests/test_converter.py::test_simple_roundtrip_with_extra_keys_forbidden PASSED [ 69%] tests/test_converter.py::test_forbid_extra_keys PASSED [ 69%] tests/test_converter.py::test_forbid_extra_keys_defaults PASSED [ 69%] tests/test_converter.py::test_forbid_extra_keys_nested_override PASSED [ 70%] tests/test_converter.py::test_nested_roundtrip FAILED [ 70%] tests/test_converter.py::test_nested_roundtrip_tuple FAILED [ 70%] tests/test_converter.py::test_union_field_roundtrip FAILED [ 70%] tests/test_converter.py::test_310_union_field_roundtrip FAILED [ 70%] tests/test_converter.py::test_optional_field_roundtrip FAILED [ 70%] tests/test_converter.py::test_310_optional_field_roundtrip FAILED [ 71%] tests/test_converter.py::test_omit_default_roundtrip PASSED [ 71%] tests/test_converter.py::test_dict_roundtrip_with_alias PASSED [ 71%] tests/test_converter.py::test_type_overrides PASSED [ 71%] tests/test_converter.py::test_calling_back PASSED [ 71%] tests/test_converter.py::test_overriding_generated_unstructure PASSED [ 71%] tests/test_converter.py::test_overriding_generated_unstructure_hook_func PASSED [ 72%] tests/test_converter.py::test_overriding_generated_structure PASSED [ 72%] tests/test_converter.py::test_overriding_generated_structure_hook_func PASSED [ 72%] tests/test_converter.py::test_seq_of_simple_classes_unstructure PASSED [ 72%] tests/test_converter.py::test_seq_of_bare_classes_structure PASSED [ 72%] tests/test_converter.py::test_annotated_attrs PASSED [ 72%] tests/test_converter.py::test_annotated_with_typing_extensions_attrs PASSED [ 73%] tests/test_copy.py::test_copy_converter PASSED [ 73%] tests/test_copy.py::test_detailed_validation PASSED [ 73%] tests/test_copy.py::test_col_overrides PASSED [ 73%] tests/test_disambiguators.py::test_edge_errors PASSED [ 73%] tests/test_disambiguators.py::test_fallback PASSED [ 73%] tests/test_disambiguators.py::test_disambiguation PASSED [ 74%] tests/test_disambiguators.py::test_disambiguate_from_discriminated_enum PASSED [ 74%] tests/test_disambiguators.py::test_default_no_literals PASSED [ 74%] tests/test_final.py::test_unstructure_final[True] PASSED [ 74%] tests/test_final.py::test_unstructure_final[False] PASSED [ 74%] tests/test_final.py::test_structure_final[True] PASSED [ 75%] tests/test_final.py::test_structure_final[False] PASSED [ 75%] tests/test_final.py::test_unstructure_bare_final[True] PASSED [ 75%] tests/test_final.py::test_unstructure_bare_final[False] PASSED [ 75%] tests/test_final.py::test_structure_bare_final[True] PASSED [ 75%] tests/test_final.py::test_structure_bare_final[False] PASSED [ 75%] tests/test_function_dispatch.py::test_function_dispatch PASSED [ 76%] tests/test_function_dispatch.py::test_function_clears_cache_after_function_added PASSED [ 76%] tests/test_gen.py::test_structure_linecache PASSED [ 76%] tests/test_gen.py::test_unstructure_linecache PASSED [ 76%] tests/test_gen.py::test_no_linecache PASSED [ 76%] tests/test_gen.py::test_linecache_dedup PASSED [ 76%] tests/test_gen_dict.py::test_unmodified_generated_unstructuring PASSED [ 77%] tests/test_gen_dict.py::test_nodefs_generated_unstructuring PASSED [ 77%] tests/test_gen_dict.py::test_nodefs_generated_unstructuring_cl PASSED [ 77%] tests/test_gen_dict.py::test_individual_overrides PASSED [ 77%] tests/test_gen_dict.py::test_unmodified_generated_structuring FAILED [ 77%] tests/test_gen_dict.py::test_renaming PASSED [ 77%] tests/test_gen_dict.py::test_renaming_forbid_extra_keys PASSED [ 78%] tests/test_gen_dict.py::test_omitting_structure[True] PASSED [ 78%] tests/test_gen_dict.py::test_omitting_structure[False] PASSED [ 78%] tests/test_gen_dict.py::test_type_names_with_quotes PASSED [ 78%] tests/test_gen_dict.py::test_forbid_extra_keys_from_converter PASSED [ 78%] tests/test_gen_dict.py::test_forbid_extra_keys_from_baseconverter PASSED [ 78%] tests/test_gen_dict_563.py::test_roundtrip PASSED [ 79%] tests/test_gen_dict_563.py::test_roundtrip_dc PASSED [ 79%] tests/test_generics.py::test_deep_copy PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[True-int-result0] PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[True-str-result1] PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[False-int-result0] PASSED [ 79%] tests/test_generics.py::test_structure_generics_with_cols[False-str-result1] PASSED [ 80%] tests/test_generics.py::test_39_structure_generics_with_cols[int-result0] PASSED [ 80%] tests/test_generics.py::test_39_structure_generics_with_cols[str-result1] PASSED [ 80%] tests/test_generics.py::test_structure_nested_generics_with_cols[int-result0] PASSED [ 80%] tests/test_generics.py::test_structure_nested_generics_with_cols[int-result1] PASSED [ 80%] tests/test_generics.py::test_unstructure_generic_attrs[True] PASSED [ 80%] tests/test_generics.py::test_unstructure_generic_attrs[False] PASSED [ 81%] tests/test_generics.py::test_unstructure_optional[True] PASSED [ 81%] tests/test_generics.py::test_unstructure_optional[False] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics[True] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics[False] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics_list[True] PASSED [ 81%] tests/test_generics.py::test_unstructure_deeply_nested_generics_list[False] PASSED [ 82%] tests/test_generics.py::test_unstructure_protocol[True] PASSED [ 82%] tests/test_generics.py::test_unstructure_protocol[False] PASSED [ 82%] tests/test_generics.py::test_roundtrip_generic_with_union PASSED [ 82%] tests/test_generics.py::test_generate_typeddict_mapping PASSED [ 82%] tests/test_generics_604.py::test_unstructure_optional[True] PASSED [ 82%] tests/test_generics_604.py::test_unstructure_optional[False] PASSED [ 83%] tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_register_cls PASSED [ 83%] tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_register_func PASSED [ 83%] tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_conflict_class_wins PASSED [ 83%] tests/test_newtypes.py::test_newtype_structure_hooks[True] PASSED [ 83%] tests/test_newtypes.py::test_newtype_structure_hooks[False] PASSED [ 83%] tests/test_newtypes.py::test_newtype_unstructure_hooks[True] PASSED [ 84%] tests/test_newtypes.py::test_newtype_unstructure_hooks[False] PASSED [ 84%] tests/test_optionals.py::test_newtype_optionals[True] PASSED [ 84%] tests/test_optionals.py::test_newtype_optionals[False] PASSED [ 84%] tests/test_optionals.py::test_newtype_modern_optionals[True] PASSED [ 84%] tests/test_optionals.py::test_newtype_modern_optionals[False] PASSED [ 84%] tests/test_recursive.py::test_simple_recursive PASSED [ 85%] tests/test_structure.py::test_structuring_primitives PASSED [ 85%] tests/test_structure.py::test_structuring_seqs PASSED [ 85%] tests/test_structure.py::test_structuring_seqs_to_deque PASSED [ 85%] tests/test_structure.py::test_structuring_sets PASSED [ 85%] tests/test_structure.py::test_stringifying_sets PASSED [ 85%] tests/test_structure.py::test_structuring_hetero_tuples PASSED [ 86%] tests/test_structure.py::test_stringifying_tuples PASSED [ 86%] tests/test_structure.py::test_structuring_dicts PASSED [ 86%] tests/test_structure.py::test_structuring_dicts_opts PASSED [ 86%] tests/test_structure.py::test_stringifying_dicts PASSED [ 86%] tests/test_structure.py::test_structuring_optional_primitives PASSED [ 86%] tests/test_structure.py::test_structuring_lists_of_opt PASSED [ 87%] tests/test_structure.py::test_stringifying_lists_of_opt PASSED [ 87%] tests/test_structure.py::test_structuring_primitive_union_hook PASSED [ 87%] tests/test_structure.py::test_structure_hook_func PASSED [ 87%] tests/test_structure.py::test_structuring_enums PASSED [ 87%] tests/test_structure.py::test_structuring_unsupported PASSED [ 88%] tests/test_structure.py::test_subclass_registration_is_honored PASSED [ 88%] tests/test_structure.py::test_structure_union_edge_case PASSED [ 88%] tests/test_structure_attrs.py::test_structure_simple_from_dict PASSED [ 88%] tests/test_structure_attrs.py::test_structure_simple_from_dict_default FAILED [ 88%] tests/test_structure_attrs.py::test_roundtrip PASSED [ 88%] tests/test_structure_attrs.py::test_structure_tuple PASSED [ 89%] tests/test_structure_attrs.py::test_structure_union PASSED [ 89%] tests/test_structure_attrs.py::test_structure_union_none PASSED [ 89%] tests/test_structure_attrs.py::test_structure_union_explicit PASSED [ 89%] tests/test_structure_attrs.py::test_structure_literal[BaseConverter] PASSED [ 89%] tests/test_structure_attrs.py::test_structure_literal[Converter] PASSED [ 89%] tests/test_structure_attrs.py::test_structure_literal_enum[BaseConverter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_enum[Converter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_multiple[BaseConverter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_multiple[Converter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_error[BaseConverter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_error[Converter] PASSED [ 90%] tests/test_structure_attrs.py::test_structure_literal_multiple_error[BaseConverter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_literal_multiple_error[Converter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_fallback_to_attrib_converters[BaseConverter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_fallback_to_attrib_converters[Converter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_prefers_attrib_converters[BaseConverter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_prefers_attrib_converters[Converter] PASSED [ 91%] tests/test_structure_attrs.py::test_structure_multitier_discriminator_union[BaseConverter] PASSED [ 92%] tests/test_structure_attrs.py::test_structure_multitier_discriminator_union[Converter] PASSED [ 92%] tests/test_typeddicts.py::test_simple_roundtrip PASSED [ 92%] tests/test_typeddicts.py::test_simple_nontotal PASSED [ 92%] tests/test_typeddicts.py::test_int_override PASSED [ 92%] tests/test_typeddicts.py::test_extra_keys PASSED [ 92%] tests/test_typeddicts.py::test_generics PASSED [ 93%] tests/test_typeddicts.py::test_not_required PASSED [ 93%] tests/test_typeddicts.py::test_required PASSED [ 93%] tests/test_typeddicts.py::test_omit PASSED [ 93%] tests/test_typeddicts.py::test_rename PASSED [ 93%] tests/test_typeddicts.py::test_forbid_extra_keys PASSED [ 93%] tests/test_typeddicts.py::test_recursive_generation PASSED [ 94%] tests/test_typeddicts.py::test_forwardref[True] PASSED [ 94%] tests/test_typeddicts.py::test_forwardref[False] PASSED [ 94%] tests/test_typeddicts.py::test_forbid_extra_keys_from_converter PASSED [ 94%] tests/test_typeddicts.py::test_forbid_extra_keys_from_baseconverter PASSED [ 94%] tests/test_unions.py::test_custom_union_toplevel_roundtrip[BaseConverter] PASSED [ 94%] tests/test_unions.py::test_custom_union_toplevel_roundtrip[Converter] PASSED [ 95%] tests/test_unions.py::test_310_custom_union_toplevel_roundtrip[BaseConverter] PASSED [ 95%] tests/test_unions.py::test_310_custom_union_toplevel_roundtrip[Converter] PASSED [ 95%] tests/test_unions.py::test_custom_union_clsfield_roundtrip[BaseConverter] PASSED [ 95%] tests/test_unions.py::test_custom_union_clsfield_roundtrip[Converter] PASSED [ 95%] tests/test_unstructure.py::test_seq_unstructure PASSED [ 95%] tests/test_unstructure.py::test_set_unstructure PASSED [ 96%] tests/test_unstructure.py::test_mapping_unstructure PASSED [ 96%] tests/test_unstructure.py::test_enum_unstructure PASSED [ 96%] tests/test_unstructure.py::test_attrs_asdict_unstructure PASSED [ 96%] tests/test_unstructure.py::test_attrs_astuple_unstructure PASSED [ 96%] tests/test_unstructure.py::test_unstructure_hooks PASSED [ 96%] tests/test_unstructure.py::test_seq_of_simple_classes_unstructure PASSED [ 97%] tests/test_v.py::test_attribute_errors PASSED [ 97%] tests/test_v.py::test_class_errors PASSED [ 97%] tests/test_v.py::test_sequence_errors PASSED [ 97%] tests/test_v.py::test_mapping_errors PASSED [ 97%] tests/test_v.py::test_custom_error_fn PASSED [ 97%] tests/test_v.py::test_custom_error_fn_nested PASSED [ 98%] tests/test_v.py::test_typeddict_attribute_errors PASSED [ 98%] tests/test_validation.py::test_class_validation PASSED [ 98%] tests/test_validation.py::test_external_class_validation PASSED [ 98%] tests/test_validation.py::test_list_validation PASSED [ 98%] tests/test_validation.py::test_mapping_validation PASSED [ 98%] tests/test_validation.py::test_counter_validation PASSED [ 99%] tests/test_validation.py::test_set_validation PASSED [ 99%] tests/test_validation.py::test_frozenset_validation PASSED [ 99%] tests/test_validation.py::test_homo_tuple_validation PASSED [ 99%] tests/test_validation.py::test_hetero_tuple_validation PASSED [ 99%] tests/test_validation.py::test_notes_pickling PASSED [100%] =================================== FAILURES =================================== ____________________________ test_simple_roundtrip _____________________________ @given(simple_typed_classes(newtypes=False), unstructure_strats) > def test_simple_roundtrip(cls_and_vals, strat): f = .run_test_as_given..wrapped_test at 0x7fecc70d40e0> tests/test_baseconverter.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ('', '', frozenset(), frozenset(), ('', '', ''), ('', '', '')), {'j': nan}) strat = @given(simple_typed_classes(newtypes=False), unstructure_strats) def test_simple_roundtrip(cls_and_vals, strat): """ Simple classes with metadata can be unstructured and restructured. """ converter = BaseConverter(unstruct_strat=strat) cl, vals, kwargs = cls_and_vals assume(strat is UnstructureStrategy.AS_DICT or not kwargs) inst = cl(*vals, **kwargs) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypAttrsClass..., ''), _j=nan) == HypAttrsClass..., ''), _j=nan) E E Omitting 6 identical items, use -vv to show E Differing attributes: E ['_j'] E E Drill down into differing attribute _j: E _j: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_simple_roundtrip( E cls_and_vals=(tests.typed.HypAttrsClass, E ('', '', frozenset(), frozenset(), ('', '', ''), ('', '', '')), E {'j': nan}), E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) cl = cls_and_vals = (, ('', '', frozenset(), frozenset(), ('', '', ''), ('', '', '')), {'j': nan}) converter = inst = HypAttrsClass(a='', _b='', _d=frozenset(), e=frozenset(), g=('', '', ''), _h=('', '', ''), _j=nan) kwargs = {'j': nan} strat = vals = ('', '', frozenset(), frozenset(), ('', '', ''), ('', '', '')) tests/test_baseconverter.py:26: AssertionError ____________________________ test_nested_roundtrip _____________________________ @given(nested_typed_classes(newtypes=False)) > def test_nested_roundtrip(cls_and_vals): f = .run_test_as_given..wrapped_test at 0x7fecc70d4540> tests/test_baseconverter.py:46: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, (frozenset(), nan), {}) @given(nested_typed_classes(newtypes=False)) def test_nested_roundtrip(cls_and_vals): """ Nested classes with metadata can be unstructured and restructured. """ converter = BaseConverter() cl, vals, kwargs = cls_and_vals # Vals are a tuple, convert into a dictionary. inst = cl(*vals, **kwargs) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypClass(a=fr...set(), _b=nan) == HypClass(a=fr...set(), _b=nan) E E Omitting 1 identical items, use -vv to show E Differing attributes: E ['_b'] E E Drill down into differing attribute _b: E _b: nan != nan E Falsifying example: test_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, (frozenset(), nan), {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 cl = cls_and_vals = (, (frozenset(), nan), {}) converter = inst = HypClass(a=frozenset(), _b=nan) kwargs = {} vals = (frozenset(), nan) tests/test_baseconverter.py:54: AssertionError _________________________ test_nested_roundtrip_tuple __________________________ @given(nested_typed_classes(kw_only=False, newtypes=False)) > def test_nested_roundtrip_tuple(cls_and_vals): f = .run_test_as_given..wrapped_test at 0x7fecc70d49a0> tests/test_baseconverter.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])],), {}) @given(nested_typed_classes(kw_only=False, newtypes=False)) def test_nested_roundtrip_tuple(cls_and_vals): """ Nested classes with metadata can be unstructured and restructured. """ converter = BaseConverter(unstruct_strat=UnstructureStrategy.AS_TUPLE) cl, vals, kwargs = cls_and_vals assert not kwargs # Vals are a tuple, convert into a dictionary. inst = cl(*vals) > assert inst == converter.structure(converter.unstructure(inst), cl) E AssertionError: assert HypClass(a=[H...HypClass()])]) == HypClass(a=[H...HypClass()])]) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: [HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])] != [HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])] E At index 0 diff: HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()]) != HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Falsifying example: test_nested_roundtrip_tuple( E cls_and_vals=(tests.typed.HypClass, E ([HypClass(a=0, E _b=0, E c=0, E _d=0, E e='', E _f=frozenset(), E g=frozenset(), E _h=frozenset(), E i=[], E _j=[], E k=nan, E _l=[HypClass()])],), E {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3.13/difflib.py:490 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:103 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:112 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:474 E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 E (and 2 more with settings.verbosity >= verbose) cl = cls_and_vals = (, ([HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])],), {}) converter = inst = HypClass(a=[HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])]) kwargs = {} vals = ([HypClass(a=0, _b=0, c=0, _d=0, e='', _f=frozenset(), g=frozenset(), _h=frozenset(), i=[], _j=[], k=nan, _l=[HypClass()])],) tests/test_baseconverter.py:67: AssertionError __________________________ test_union_field_roundtrip __________________________ @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) > @given( simple_typed_classes(defaults=False, newtypes=False), simple_typed_classes(defaults=False, newtypes=False), unstructure_strats, ) f = .run_test_as_given..wrapped_test at 0x7fecc70d4f40> tests/test_baseconverter.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, (0, '', {}), {'_f': nan, 'g': 0}) cl_and_vals_b = (, (None,), {}) strat = @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) @given( simple_typed_classes(defaults=False, newtypes=False), simple_typed_classes(defaults=False, newtypes=False), unstructure_strats, ) def test_union_field_roundtrip(cl_and_vals_a, cl_and_vals_b, strat): """ Classes with union fields can be unstructured and structured. """ converter = BaseConverter(unstruct_strat=strat) cl_a, vals_a, kwargs_a = cl_and_vals_a assume(strat is UnstructureStrategy.AS_DICT or not kwargs_a) cl_b, vals_b, _ = cl_and_vals_b a_field_names = {a.name for a in fields(cl_a)} b_field_names = {a.name for a in fields(cl_b)} assume(a_field_names) assume(b_field_names) common_names = a_field_names & b_field_names assume(len(a_field_names) > len(common_names)) @define class C: a: Union[cl_a, cl_b] inst = C(a=cl_a(*vals_a, **kwargs_a)) if strat is UnstructureStrategy.AS_DICT: > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC..., e=nan, g=0)) == C(a=HypAttrsC..., e=nan, g=0)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=0, _b='', _d={}, e=nan, g=0) != HypAttrsClass(a=0, _b='', _d={}, e=nan, g=0) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_union_field_roundtrip( E # The test always failed when commented parts were varied together. E cl_and_vals_a=(tests.typed.HypAttrsClass, E (0, '', {}), E {'_f': nan, 'g': 0}), E cl_and_vals_b=(tests.typed.HypAttrsClass, E (None,), E {}), # or any other generated value E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> _ = {} a_field_names = {'_b', '_d', 'a', 'e', 'g'} b_field_names = {'a'} cl_a = cl_and_vals_a = (, (0, '', {}), {'_f': nan, 'g': 0}) cl_and_vals_b = (, (None,), {}) cl_b = common_names = {'a'} converter = inst = C(a=HypAttrsClass(a=0, _b='', _d={}, e=nan, g=0)) kwargs_a = {'_f': nan, 'g': 0} strat = vals_a = (0, '', {}) vals_b = (None,) tests/test_baseconverter.py:99: AssertionError ________________________ test_310_union_field_roundtrip ________________________ @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") > @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) f = .run_test_as_given..wrapped_test at 0x7fecc70d5760> tests/test_baseconverter.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, (0, '', '', '', frozenset(), [], ...), {'_r': frozenset(), '_x': [], 'o': '', 'p': '', ...}) cl_and_vals_b = (, (None,), {}) strat = @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) @given( simple_typed_classes(defaults=False, newtypes=False), simple_typed_classes(defaults=False, newtypes=False), unstructure_strats, ) def test_310_union_field_roundtrip(cl_and_vals_a, cl_and_vals_b, strat): """ Classes with union fields can be unstructured and structured. """ converter = BaseConverter(unstruct_strat=strat) cl_a, vals_a, kwargs_a = cl_and_vals_a cl_b, vals_b, _ = cl_and_vals_b assume(strat is UnstructureStrategy.AS_DICT or not kwargs_a) a_field_names = {a.name for a in fields(cl_a)} b_field_names = {a.name for a in fields(cl_b)} assume(a_field_names) assume(b_field_names) common_names = a_field_names & b_field_names assume(len(a_field_names) > len(common_names)) @define class C: a: cl_a | cl_b inst = C(a=cl_a(*vals_a, **kwargs_a)) if strat is UnstructureStrategy.AS_DICT: > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC... _v={}, w=[])) == C(a=HypAttrsC... _v={}, w=[])) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=0, _b='', _d='', e='', g=frozenset(), _h=[], _j=nan, k=0, m={}, _n='', _p='', q=frozenset(), s=frozenset(), _t={}, _v={}, w=[]) != HypAttrsClass(a=0, _b='', _d='', e='', g=frozenset(), _h=[], _j=nan, k=0, m={}, _n='', _p='', q=frozenset(), s=frozenset(), _t={}, _v={}, w=[]) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=10, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=11, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=12, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=13, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=14, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=15, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'k': _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_l', metadata={}), 'm': _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_n': _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='o', metadata={}), '_p': _CountingAttr(counter=10, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'q': _CountingAttr(counter=11, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_r', metadata={}), 's': _CountingAttr(counter=12, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_t': _CountingAttr(counter=13, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='u', metadata={}), '_v': _CountingAttr(counter=14, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'w': _CountingAttr(counter=15, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_x', metadata={})} E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_310_union_field_roundtrip( E # The test always failed when commented parts were varied together. E cl_and_vals_a=(tests.typed.HypAttrsClass, E (0, '', '', '', frozenset(), [], nan, 0, {}), E {'o': '', E 'p': '', E '_r': frozenset(), E 's': frozenset(), E 'u': {}, E 'v': {}, E '_x': []}), E cl_and_vals_b=(tests.typed.HypAttrsClass, E (None,), E {}), # or any other generated value E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> _ = {} a_field_names = {'_b', '_d', '_h', '_j', '_n', '_p', ...} b_field_names = {'a'} cl_a = cl_and_vals_a = (, (0, '', '', '', frozenset(), [], ...), {'_r': frozenset(), '_x': [], 'o': '', 'p': '', ...}) cl_and_vals_b = (, (None,), {}) cl_b = common_names = {'a'} converter = inst = C(a=HypAttrsClass(a=0, _b='', _d='', e='', g=frozenset(), _h=[], _j=nan, k=0, m={}, _n='', _p='', q=frozenset(), s=frozenset(), _t={}, _v={}, w=[])) kwargs_a = {'_r': frozenset(), '_x': [], 'o': '', 'p': '', ...} strat = vals_a = (0, '', '', '', frozenset(), [], ...) vals_b = (None,) tests/test_baseconverter.py:142: AssertionError ________________________ test_optional_field_roundtrip _________________________ @given(simple_typed_classes(defaults=False, newtypes=False)) > def test_optional_field_roundtrip(cl_and_vals): f = .run_test_as_given..wrapped_test at 0x7fecc70d5d00> tests/test_baseconverter.py:156: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, ('', nan), {}) @given(simple_typed_classes(defaults=False, newtypes=False)) def test_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = BaseConverter() cl, vals, kwargs = cl_and_vals @define class C: a: Optional[cl] inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC...a='', _b=nan)) == C(a=HypAttrsC...a='', _b=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a='', _b=nan) != HypAttrsClass(a='', _b=nan) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={})} E Falsifying example: test_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, E ('', struct.unpack('d', struct.pack('Q', 0x7ff8000000000001))[0]), E {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> cl = cl_and_vals = (, ('', nan), {}) converter = inst = C(a=HypAttrsClass(a='', _b=nan)) kwargs = {} vals = ('', nan) tests/test_baseconverter.py:168: AssertionError ______________________ test_310_optional_field_roundtrip _______________________ @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") > @given(simple_typed_classes(defaults=False, newtypes=False)) f = .run_test_as_given..wrapped_test at 0x7fecc70d60c0> tests/test_baseconverter.py:177: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}) @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") @given(simple_typed_classes(defaults=False, newtypes=False)) def test_310_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = BaseConverter() cl, vals, kwargs = cl_and_vals @define class C: a: cl | None inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsClass(a=nan)) == C(a=HypAttrsClass(a=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=nan) != HypAttrsClass(a=nan) E ... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_310_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, (nan,), {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> cl = cl_and_vals = (, (nan,), {}) converter = inst = C(a=HypAttrsClass(a=nan)) kwargs = {} vals = (nan,) tests/test_baseconverter.py:190: AssertionError _________________________ test_simple_roundtrip_tuple __________________________ @given( > simple_typed_classes(kw_only=False, newtypes=False) | simple_typed_dataclasses(newtypes=False), booleans(), ) f = .run_test_as_given..wrapped_test at 0x7fecc70d7920> tests/test_converter.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, (nan,), {}), dv = False @given( simple_typed_classes(kw_only=False, newtypes=False) | simple_typed_dataclasses(newtypes=False), booleans(), ) def test_simple_roundtrip_tuple(cls_and_vals, dv: bool): """ Simple classes with metadata can be unstructured and restructured. """ converter = Converter( unstruct_strat=UnstructureStrategy.AS_TUPLE, detailed_validation=dv ) cl, vals, _ = cls_and_vals inst = cl(*vals) unstructured = converter.unstructure(inst) assert "Hyp" not in repr(unstructured) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypAttrsClass(a=nan) == HypAttrsClass(a=nan) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: nan != nan E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_simple_roundtrip_tuple( E cls_and_vals=(tests.typed.HypAttrsClass, (nan,), {}), E dv=False, # or any other generated value E ) _ = {} cl = cls_and_vals = (, (nan,), {}) converter = dv = False inst = HypAttrsClass(a=nan) unstructured = (nan,) vals = (nan,) tests/test_converter.py:69: AssertionError ____________________________ test_nested_roundtrip _____________________________ @given(nested_typed_classes(defaults=True, min_attrs=1), booleans()) > def test_nested_roundtrip(cls_and_vals, omit_if_default): f = .run_test_as_given..wrapped_test at 0x7fecc70718a0> tests/test_converter.py:203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})],), {}) omit_if_default = False @given(nested_typed_classes(defaults=True, min_attrs=1), booleans()) def test_nested_roundtrip(cls_and_vals, omit_if_default): """ Nested classes with metadata can be unstructured and restructured. """ converter = Converter(omit_if_default=omit_if_default) cl, vals, kwargs = cls_and_vals # Vals are a tuple, convert into a dictionary. inst = cl(*vals, **kwargs) unstructured = converter.unstructure(inst) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypClass(a=[H...=nan, _h={})]) == HypClass(a=[H...=nan, _h={})]) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: [HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})] != [HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})] E At index 0 diff: HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={}) != HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Falsifying example: test_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, E ([HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})],), E {}), E omit_if_default=False, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3.13/difflib.py:490 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:128 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:469 E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 cl = cls_and_vals = (, ([HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})],), {}) converter = inst = HypClass(a=[HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})]) kwargs = {} omit_if_default = False unstructured = {'a': [{'_b': 0, '_d': {}, '_f': {}, '_h': {}, ...}]} vals = ([HypClass(a=0, _b=0, c=frozenset(), _d={}, e={}, _f={}, g=nan, _h={})],) tests/test_converter.py:212: AssertionError _________________________ test_nested_roundtrip_tuple __________________________ @given( > nested_typed_classes(defaults=True, min_attrs=1, kw_only=False, newtypes=False), booleans(), ) f = .run_test_as_given..wrapped_test at 0x7fecc7071b20> tests/test_converter.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)],), {}) omit_if_default = False @given( nested_typed_classes(defaults=True, min_attrs=1, kw_only=False, newtypes=False), booleans(), ) def test_nested_roundtrip_tuple(cls_and_vals, omit_if_default: bool): """ Nested classes with metadata can be unstructured and restructured. """ converter = Converter( unstruct_strat=UnstructureStrategy.AS_TUPLE, omit_if_default=omit_if_default ) cl, vals, _ = cls_and_vals # Vals are a tuple, convert into a dictionary. inst = cl(*vals) unstructured = converter.unstructure(inst) > assert inst == converter.structure(unstructured, cl) E AssertionError: assert HypClass(a=[H...h={}, i=nan)]) == HypClass(a=[H...h={}, i=nan)]) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: [HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)] != [HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)] E At index 0 diff: HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan) != HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)... E E ...Full output truncated (5 lines hidden), use '-vv' to show E Falsifying example: test_nested_roundtrip_tuple( E cls_and_vals=(tests.typed.HypClass, E ([HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)],), E {}), E omit_if_default=False, # or any other generated value E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3.13/difflib.py:490 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:103 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:112 E /usr/lib/python3/dist-packages/_pytest/_io/pprint.py:474 E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 E (and 2 more with settings.verbosity >= verbose) _ = {} cl = cls_and_vals = (, ([HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)],), {}) converter = inst = HypClass(a=[HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)]) omit_if_default = False unstructured = ([(0, 0, 0, 0, 0, {}, ...)],) vals = ([HypClass(a=0, _b=0, c=0, _d=0, e=0, _f={}, g={}, _h={}, i=nan)],) tests/test_converter.py:230: AssertionError __________________________ test_union_field_roundtrip __________________________ @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) > @given( simple_typed_classes(defaults=False, newtypes=False), simple_typed_classes(defaults=False, newtypes=False), unstructure_strats, ) f = .run_test_as_given..wrapped_test at 0x7fecc7072020> tests/test_converter.py:234: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, (0, nan, {}, [], [], []), {'j': 0}) cl_and_vals_b = (, (None,), {}) strat = @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) @given( simple_typed_classes(defaults=False, newtypes=False), simple_typed_classes(defaults=False, newtypes=False), unstructure_strats, ) def test_union_field_roundtrip(cl_and_vals_a, cl_and_vals_b, strat): """ Classes with union fields can be unstructured and structured. """ converter = Converter(unstruct_strat=strat) cl_a, vals_a, kwargs_a = cl_and_vals_a cl_b, _, _ = cl_and_vals_b assume(strat is UnstructureStrategy.AS_DICT or not kwargs_a) a_field_names = {a.name for a in fields(cl_a)} b_field_names = {a.name for a in fields(cl_b)} assume(a_field_names) assume(b_field_names) common_names = a_field_names & b_field_names assume(len(a_field_names) > len(common_names)) @define class C: a: Union[cl_a, cl_b] inst = C(a=cl_a(*vals_a, **kwargs_a)) if strat is UnstructureStrategy.AS_DICT: unstructured = converter.unstructure(inst) > assert inst == converter.structure(converter.unstructure(unstructured), C) E AssertionError: assert C(a=HypAttrsC... _h=[], _j=0)) == C(a=HypAttrsC... _h=[], _j=0)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=0, _b=nan, _d={}, e=[], g=[], _h=[], _j=0) != HypAttrsClass(a=0, _b=nan, _d={}, e=[], g=[], _h=[], _j=0) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_union_field_roundtrip( E # The test always failed when commented parts were varied together. E cl_and_vals_a=(tests.typed.HypAttrsClass, E (0, nan, {}, [], [], []), E {'j': 0}), E cl_and_vals_b=(tests.typed.HypAttrsClass, E (None,), E {}), # or any other generated value E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) C = .C'> _ = {} a_field_names = {'_b', '_d', '_h', '_j', 'a', 'e', ...} b_field_names = {'a'} cl_a = cl_and_vals_a = (, (0, nan, {}, [], [], []), {'j': 0}) cl_and_vals_b = (, (None,), {}) cl_b = common_names = {'a'} converter = inst = C(a=HypAttrsClass(a=0, _b=nan, _d={}, e=[], g=[], _h=[], _j=0)) kwargs_a = {'j': 0} strat = unstructured = {'a': {'_b': nan, '_d': {}, '_h': [], '_j': 0, ...}} vals_a = (0, nan, {}, [], [], []) tests/test_converter.py:263: AssertionError ________________________ test_310_union_field_roundtrip ________________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341, in from_call | result: TResult | None = func() | ~~~~^^ | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 242, in | lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise | ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 182, in _multicall | return outcome.get_result() | ~~~~~~~~~~~~~~~~~~^^ | File "/usr/lib/python3/dist-packages/pluggy/_result.py", line 100, in get_result | raise exc.with_traceback(exc.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call | yield from thread_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call | yield from unraisable_exception_runtest_hook() | File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 846, in pytest_runtest_call | yield from self._runtest_for(item, "call") | File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 829, in _runtest_for | yield | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/capture.py", line 880, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall | teardown.throw(outcome._exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/_pytest/skipping.py", line 257, in pytest_runtest_call | return (yield) | ^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 174, in pytest_runtest_call | item.runtest() | ~~~~~~~~~~~~^^ | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1627, in runtest | self.ihook.pytest_pyfunc_call(pyfuncitem=self) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in __call__ | return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec | return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall | raise exception.with_traceback(exception.__traceback__) | File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3/dist-packages/_pytest/python.py", line 159, in pytest_pyfunc_call | result = testfunction(**testargs) | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build/tests/test_converter.py", line 278, in test_310_union_field_roundtrip | @settings(suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow]) | ^^^ | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1758, in wrapped_test | raise the_error_hypothesis_found | ExceptionGroup: Hypothesis found 2 distinct failures. (2 sub-exceptions) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build/tests/test_converter.py", line 319, in test_310_union_field_roundtrip | assert inst == converter.structure(unstructured, C) | AssertionError: assert C(a=HypAttrsC... m=[], _n=[])) == C(a=HypAttrsC... m=[], _n=[])) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d=nan, e=0, g=0, _h=frozenset(), _j=[], k=[], m=[], _n=[]) != HypAttrsClass(a=0, _b=0, _d=nan, e=0, g=0, _h=frozenset(), _j=[], k=[], m=[], _n=[]) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'k': _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_l', metadata={}), 'm': _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_n': _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='o', metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_310_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, | 0, | struct.unpack('d', struct.pack('Q', 0x7ff8000000000001))[0], | 0, | 0, | frozenset(), | [], | [], | [], | []), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_TUPLE, # or any other generated value | ) +---------------- 2 ---------------- | Traceback (most recent call last): | File "/build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build/tests/test_converter.py", line 308, in test_310_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(unstructured), C) | AssertionError: assert C(a=HypAttrsC... m=[], _n=[])) == C(a=HypAttrsC... m=[], _n=[])) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d=nan, e=0, g=0, _h=frozenset(), _j=[], k=[], m=[], _n=[]) != HypAttrsClass(a=0, _b=0, _d=nan, e=0, g=0, _h=frozenset(), _j=[], k=[], m=[], _n=[]) | ... | | ...Full output truncated (6 lines hidden), use '-vv' to show | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'e': _CountingAttr(counter=3, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_f', metadata={}), 'g': _CountingAttr(counter=4, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_h': _CountingAttr(counter=5, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='i', metadata={}), '_j': _CountingAttr(counter=6, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), 'k': _CountingAttr(counter=7, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='_l', metadata={}), 'm': _CountingAttr(counter=8, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_n': _CountingAttr(counter=9, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='o', metadata={})} | Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] | Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} | Falsifying example: test_310_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, | 0, | struct.unpack('d', struct.pack('Q', 0x7ff8000000000001))[0], | 0, | 0, | frozenset(), | [], | [], | [], | []), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_DICT, # or any other generated value | ) +------------------------------------ ________________________ test_optional_field_roundtrip _________________________ @given(simple_typed_classes(defaults=False)) > def test_optional_field_roundtrip(cl_and_vals): f = .run_test_as_given..wrapped_test at 0x7fecc7072ca0> tests/test_converter.py:323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, ([], [], nan), {}) @given(simple_typed_classes(defaults=False)) def test_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = Converter() cl, vals, kwargs = cl_and_vals @define class C: a: Optional[cl] inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC...b=[], _d=nan)) == C(a=HypAttrsC...b=[], _d=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=[], _b=[], _d=nan) != HypAttrsClass(a=[], _b=[], _d=nan) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, ([], [], nan), {}), E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 C = .C'> cl = cl_and_vals = (, ([], [], nan), {}) converter = inst = C(a=HypAttrsClass(a=[], _b=[], _d=nan)) kwargs = {} vals = ([], [], nan) tests/test_converter.py:335: AssertionError ______________________ test_310_optional_field_roundtrip _______________________ @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") > @given(simple_typed_classes(defaults=False)) f = .run_test_as_given..wrapped_test at 0x7fecc7073240> tests/test_converter.py:344: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, ('', [], nan), {}) @pytest.mark.skipif(not is_py310_plus, reason="3.10+ union syntax") @given(simple_typed_classes(defaults=False)) def test_310_optional_field_roundtrip(cl_and_vals): """ Classes with optional fields can be unstructured and structured. """ converter = Converter() cl, vals, kwargs = cl_and_vals @define class C: a: cl | None inst = C(a=cl(*vals, **kwargs)) > assert inst == converter.structure(converter.unstructure(inst), C) E AssertionError: assert C(a=HypAttrsC...b=[], _d=nan)) == C(a=HypAttrsC...b=[], _d=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a='', _b=[], _d=nan) != HypAttrsClass(a='', _b=[], _d=nan) E ... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Class fields: [_CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})] E Attributes: {'a': _CountingAttr(counter=0, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_b': _CountingAttr(counter=1, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='c', metadata={}), '_d': _CountingAttr(counter=2, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={})} E Falsifying example: test_310_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, ('', [], nan), {}), E ) C = .C'> cl = cl_and_vals = (, ('', [], nan), {}) converter = inst = C(a=HypAttrsClass(a='', _b=[], _d=nan)) kwargs = {} vals = ('', [], nan) tests/test_converter.py:357: AssertionError ____________________ test_unmodified_generated_structuring _____________________ @given( > cl_and_vals=nested_typed_classes() | simple_typed_classes() | simple_typed_dataclasses(), dv=..., ) f = .run_test_as_given..wrapped_test at 0x7fecc6c622a0> tests/test_gen_dict.py:166: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (None, [HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)]), {}) dv = False @given( cl_and_vals=nested_typed_classes() | simple_typed_classes() | simple_typed_dataclasses(), dv=..., ) def test_unmodified_generated_structuring(cl_and_vals, dv: bool): converter = Converter(detailed_validation=dv) cl, vals, kwargs = cl_and_vals fn = make_dict_structure_fn(cl, converter, _cattrs_detailed_validation=dv) inst = cl(*vals, **kwargs) unstructured = converter.unstructure(inst) assert "Hyp" not in repr(unstructured) converter.register_structure_hook(cl, fn) res = converter.structure(unstructured, cl) > assert inst == res E AssertionError: assert HypClass(a=No...nan, i=None)]) == HypClass(a=No...nan, i=None)]) E E Omitting 1 identical items, use -vv to show E Differing attributes: E ['_b'] E E Drill down into differing attribute _b: E _b: [HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)] != [HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)]... E E ...Full output truncated (6 lines hidden), use '-vv' to show E Falsifying example: test_unmodified_generated_structuring( E cl_and_vals=(tests.typed.HypClass, E (None, E [HypClass(a=0, E _b=('', '', ''), E c=None, E _d={}, E e={}, E _f=[HypClass(a=frozenset(), E _b=frozenset(), E c=frozenset(), E _d=None, E e=0)], E g=0, E _h=struct.unpack('d', struct.pack('Q', 0x7ff8000000000001))[0], E i=None)]), E {}), E dv=False, E ) E Explanation: E These lines were always and only run by failing examples: E /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 cl = cl_and_vals = (, (None, [HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)]), {}) converter = dv = False fn = inst = HypClass(a=None, _b=[HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)]) kwargs = {} res = HypClass(a=None, _b=[HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)]) unstructured = {'_b': [{'_b': ['', '', ''], '_d': {}, '_f': [{'_b': frozenset(), '_d': None, 'a': frozenset(), 'c': frozenset(), ...}], '_h': nan, ...}], 'a': None} vals = (None, [HypClass(a=0, _b=('', '', ''), c=None, _d={}, e={}, _f=[HypClass(a=frozenset(), _b=frozenset(), c=frozenset(), _d=None, e=0)], g=0, _h=nan, i=None)]) tests/test_gen_dict.py:186: AssertionError ---------------------------------- Hypothesis ---------------------------------- WARNING: Hypothesis has spent more than five minutes working to shrink a failing example, and stopped because it is making very slow progress. When you re-run your tests, shrinking will resume and may take this long before aborting again. PLEASE REPORT THIS if you can provide a reproducing example, so that we can improve shrinking performance for everyone. ___________________ test_structure_simple_from_dict_default ____________________ @given(simple_classes(defaults=True, min_attrs=1, frozen=False), data()) > def test_structure_simple_from_dict_default(cl_and_vals, data): f = .run_test_as_given..wrapped_test at 0x7fecc6fb07c0> tests/test_structure_attrs.py:31: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (0.0,), {}), data = data(...) @given(simple_classes(defaults=True, min_attrs=1, frozen=False), data()) def test_structure_simple_from_dict_default(cl_and_vals, data): """Test structuring non-nested attrs classes with default value.""" converter = BaseConverter() cl, vals, kwargs = cl_and_vals obj = cl(*vals, **kwargs) attrs_with_defaults = [a for a in fields(cl) if a.default is not NOTHING] to_remove = data.draw( lists(elements=sampled_from(attrs_with_defaults), unique=True) ) for a in to_remove: if isinstance(a.default, Factory): setattr(obj, a.name, a.default.factory()) else: setattr(obj, a.name, a.default) dumped = asdict(obj) for a in to_remove: del dumped[a.name] > assert obj == converter.structure(dumped, cl) E AssertionError: assert HypClass(a=nan) == HypClass(a=nan) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: nan != nan E Falsifying example: test_structure_simple_from_dict_default( E cl_and_vals=(tests.untyped.HypClass, (0.0,), {}), E data=data(...), E ) E Draw 1: [Attribute(name='a', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=None, init=True, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a')] a = Attribute(name='a', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=Non...True, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a') attrs_with_defaults = [Attribute(name='a', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=No...rue, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a')] cl = cl_and_vals = (, (0.0,), {}) converter = data = data(...) dumped = {} kwargs = {} obj = HypClass(a=nan) to_remove = [Attribute(name='a', default=nan, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=No...rue, metadata=mappingproxy({}), type=None, converter=None, kw_only=False, inherited=False, on_setattr=None, alias='a')] vals = (0.0,) tests/test_structure_attrs.py:52: AssertionError =============================== warnings summary =============================== tests/typed.py:417 /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build/tests/typed.py:417: HypothesisWarning: Return-type annotation is `st.SearchStrategy[typing.Tuple[attr._make._CountingAttr, st.SearchStrategy]]`, but the decorated function should return a value (not a strategy) @composite tests/typed.py:826 /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build/tests/typed.py:826: HypothesisWarning: Return-type annotation is `st.SearchStrategy[typing.Tuple[typing.Type, st.SearchStrategy[typing.Tuple[typing.Any]], st.SearchStrategy[typing.Dict[str, typing.Any]]]]`, but the decorated function should return a value (not a strategy) @composite -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_baseconverter.py::test_simple_roundtrip - AssertionError: a... FAILED tests/test_baseconverter.py::test_nested_roundtrip - AssertionError: a... FAILED tests/test_baseconverter.py::test_nested_roundtrip_tuple - AssertionEr... FAILED tests/test_baseconverter.py::test_union_field_roundtrip - AssertionErr... FAILED tests/test_baseconverter.py::test_310_union_field_roundtrip - Assertio... FAILED tests/test_baseconverter.py::test_optional_field_roundtrip - Assertion... FAILED tests/test_baseconverter.py::test_310_optional_field_roundtrip - Asser... FAILED tests/test_converter.py::test_simple_roundtrip_tuple - AssertionError:... FAILED tests/test_converter.py::test_nested_roundtrip - AssertionError: asser... FAILED tests/test_converter.py::test_nested_roundtrip_tuple - AssertionError:... FAILED tests/test_converter.py::test_union_field_roundtrip - AssertionError: ... FAILED tests/test_converter.py::test_310_union_field_roundtrip - ExceptionGro... FAILED tests/test_converter.py::test_optional_field_roundtrip - AssertionErro... FAILED tests/test_converter.py::test_310_optional_field_roundtrip - Assertion... FAILED tests/test_gen_dict.py::test_unmodified_generated_structuring - Assert... FAILED tests/test_structure_attrs.py::test_structure_simple_from_dict_default ===== 16 failed, 561 passed, 15 xfailed, 2 warnings in 1203.85s (0:20:03) ====== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build; python3.13 -m pytest -v --ignore tests/test_unstructure_collections.py --ignore tests/test_preconf.py -k 'not test_orjson' dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.13" returned exit code 13 make: *** [debian/rules:9: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/81991 and its subdirectories