Tue Jan 28 13:37:57 UTC 2025 I: starting to build python-cattrs/trixie/armhf on jenkins on '2025-01-28 13:37' Tue Jan 28 13:37:57 UTC 2025 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/armhf_2/11255/console.log Tue Jan 28 13:37:57 UTC 2025 I: Downloading source for trixie/python-cattrs=23.2.3-1 --2025-01-28 13:37:57-- http://deb.debian.org/debian/pool/main/p/python-cattrs/python-cattrs_23.2.3-1.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2250 (2.2K) [text/prs.lines.tag] Saving to: ‘python-cattrs_23.2.3-1.dsc’ 0K .. 100% 361M=0s 2025-01-28 13:37:57 (361 MB/s) - ‘python-cattrs_23.2.3-1.dsc’ saved [2250/2250] Tue Jan 28 13:37:57 UTC 2025 I: python-cattrs_23.2.3-1.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Format: 3.0 (quilt) Source: python-cattrs Binary: python3-cattr Architecture: all Version: 23.2.3-1 Maintainer: Sandro Tosi Homepage: https://github.com/python-attrs/cattrs Standards-Version: 4.6.2.0 Vcs-Browser: https://salsa.debian.org/morph/python-cattrs Vcs-Git: https://salsa.debian.org/morph/python-cattrs.git Testsuite: autopkgtest-pkg-pybuild Build-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 Package-List: python3-cattr deb python optional arch=all Checksums-Sha1: edcdaaa34ca6b25257726c692560adbb9af988ed 565840 python-cattrs_23.2.3.orig.tar.xz 42adb8724fd15f86d015ac061ddb327174d2c210 2856 python-cattrs_23.2.3-1.debian.tar.xz Checksums-Sha256: c48fa2a4067dab3c6c09ca326b7382996ec3bf480fecb762c46e03522446d427 565840 python-cattrs_23.2.3.orig.tar.xz 88fb8465645d7fdbba15885daae11453f917975bff56cad1c9b8b298f50da9df 2856 python-cattrs_23.2.3-1.debian.tar.xz Files: b3c14073d863dfa0a1803246a2305111 565840 python-cattrs_23.2.3.orig.tar.xz 23cd462fac08b4f5a928494f90d41c78 2856 python-cattrs_23.2.3-1.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEufrTGSrz5KUwnZ05h588mTgBqU8FAmXsD6oACgkQh588mTgB qU8RAg/9HM0zGgJflINIkaDXz4VSPwM/IwjPZtZE/rIDbXOOFH/7NChTEYwbJLSD WyD5P4j/OMUm2l80XRvn33E5wkHEVmfJbd1+jyksTJd76zT9RhvEY3zunVMWIYoh Qt3kb/zqjGZ+S/oU6rGjGH9cyXrUx7pxkWOD4GpaB5owDFq+HCcD1AXhTo/g64mG 5A3TV9AO80s0RgJkq1QPnWFeZZXW7c4nQ6QiafWg1DwmrEjodt1wyjE9inr9Ax+/ zXGTZI1X9MUNL+Q1B8vlw+f+/29pqTFJVMnXFmuD2IzP01yi+BXQzuYlmR4y7GHR idgBWAvHaaCXlmtUKtP45z2DXnVoyBOIpLNlGy8zZVndTurt6rCkIR+gQVY58bfk voHXKngmfQ7ppw5m/TSHBUL+XCECDISLQXlcgEc3OcKbA8+2qlqYPi5M8RiaOaFS Od6zZEhXMPMsl6eVnlLslmdZhgx6r9n5u/eQLWlNFR5p9urbiqLeacaofeVsM3pW qZHnqPKIs3xMw38rVNWuuoRXCMexE6kkfM6AHhMDynsX7DAJlpzNhGP5iUvU7dg7 y57qcvDNdZj1dIwJlPxosuD50DmsDBvBuyi5pmLL8aFLoe5mn0Tdm8BcH8TBsCi1 /DgPZSXxK4WnBlMb83UWkgtCy+XyKEwnuSeZ+Qoxy+ZRgyj8kWk= =owrp -----END PGP SIGNATURE----- Tue Jan 28 13:37:57 UTC 2025 I: Checking whether the package is not for us Tue Jan 28 13:37:57 UTC 2025 I: Starting 1st build on remote node virt32a-armhf-rb.debian.net. Tue Jan 28 13:37:57 UTC 2025 I: Preparing to do remote build '1' on virt32a-armhf-rb.debian.net. Tue Jan 28 14:22:34 UTC 2025 I: Deleting $TMPDIR on virt32a-armhf-rb.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Tue Jan 28 01:38:07 -12 2025 I: pbuilder-time-stamp: 1738071487 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-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/20972/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='armhf' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' DISTRIBUTION='trixie' HOME='/root' HOST_ARCH='armhf' IFS=' ' INVOCATION_ID='3b32dd37f564474a951fc7b5208912bb' 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='20972' 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.Lu6ktnxz/pbuilderrc_NzUu --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Lu6ktnxz/b1 --logfile b1/build.log python-cattrs_23.2.3-1.dsc' SUDO_GID='113' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://10.0.0.15:3142/' I: uname -a Linux virt32a 6.1.0-30-armmp-lpae #1 SMP Debian 6.1.124-1 (2025-01-12) armv7l GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/20972/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: armhf 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 ... 19568 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 34.3 MB of archives. After unpacking 136 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian trixie/main armhf libpython3.13-minimal armhf 3.13.1-3 [844 kB] Get: 2 http://deb.debian.org/debian trixie/main armhf libexpat1 armhf 2.6.4-1 [83.5 kB] Get: 3 http://deb.debian.org/debian trixie/main armhf python3.13-minimal armhf 3.13.1-3 [1840 kB] Get: 4 http://deb.debian.org/debian trixie/main armhf python3-minimal armhf 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian trixie/main armhf media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian trixie/main armhf netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian trixie/main armhf tzdata all 2024b-6 [257 kB] Get: 8 http://deb.debian.org/debian trixie/main armhf libffi8 armhf 3.4.6-1 [20.0 kB] Get: 9 http://deb.debian.org/debian trixie/main armhf readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian trixie/main armhf libreadline8t64 armhf 8.2-6 [146 kB] Get: 11 http://deb.debian.org/debian trixie/main armhf libpython3.13-stdlib armhf 3.13.1-3 [1850 kB] Get: 12 http://deb.debian.org/debian trixie/main armhf python3.13 armhf 3.13.1-3 [740 kB] Get: 13 http://deb.debian.org/debian trixie/main armhf libpython3-stdlib armhf 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian trixie/main armhf python3 armhf 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian trixie/main armhf libpython3.12-minimal armhf 3.12.8-5 [803 kB] Get: 16 http://deb.debian.org/debian trixie/main armhf python3.12-minimal armhf 3.12.8-5 [1812 kB] Get: 17 http://deb.debian.org/debian trixie/main armhf sensible-utils all 0.0.24 [24.8 kB] Get: 18 http://deb.debian.org/debian trixie/main armhf libmagic-mgc armhf 1:5.45-3+b1 [314 kB] Get: 19 http://deb.debian.org/debian trixie/main armhf libmagic1t64 armhf 1:5.45-3+b1 [98.5 kB] Get: 20 http://deb.debian.org/debian trixie/main armhf file armhf 1:5.45-3+b1 [42.3 kB] Get: 21 http://deb.debian.org/debian trixie/main armhf gettext-base armhf 0.22.5-4 [196 kB] Get: 22 http://deb.debian.org/debian trixie/main armhf libuchardet0 armhf 0.0.8-1+b2 [65.6 kB] Get: 23 http://deb.debian.org/debian trixie/main armhf groff-base armhf 1.23.0-7 [1095 kB] Get: 24 http://deb.debian.org/debian trixie/main armhf bsdextrautils armhf 2.40.4-1 [84.6 kB] Get: 25 http://deb.debian.org/debian trixie/main armhf libpipeline1 armhf 1.5.8-1 [35.0 kB] Get: 26 http://deb.debian.org/debian trixie/main armhf man-db armhf 2.13.0-1 [1382 kB] Get: 27 http://deb.debian.org/debian trixie/main armhf m4 armhf 1.4.19-5 [272 kB] Get: 28 http://deb.debian.org/debian trixie/main armhf autoconf all 2.72-3 [493 kB] Get: 29 http://deb.debian.org/debian trixie/main armhf autotools-dev all 20220109.1 [51.6 kB] Get: 30 http://deb.debian.org/debian trixie/main armhf automake all 1:1.16.5-1.3 [823 kB] Get: 31 http://deb.debian.org/debian trixie/main armhf autopoint all 0.22.5-4 [723 kB] Get: 32 http://deb.debian.org/debian trixie/main armhf libdebhelper-perl all 13.23 [90.6 kB] Get: 33 http://deb.debian.org/debian trixie/main armhf libtool all 2.5.4-2 [539 kB] Get: 34 http://deb.debian.org/debian trixie/main armhf dh-autoreconf all 20 [17.1 kB] Get: 35 http://deb.debian.org/debian trixie/main armhf libarchive-zip-perl all 1.68-1 [104 kB] Get: 36 http://deb.debian.org/debian trixie/main armhf libfile-stripnondeterminism-perl all 1.14.1-1 [19.6 kB] Get: 37 http://deb.debian.org/debian trixie/main armhf dh-strip-nondeterminism all 1.14.1-1 [8584 B] Get: 38 http://deb.debian.org/debian trixie/main armhf libelf1t64 armhf 0.192-4 [184 kB] Get: 39 http://deb.debian.org/debian trixie/main armhf dwz armhf 0.15-1+b2 [106 kB] Get: 40 http://deb.debian.org/debian trixie/main armhf libunistring5 armhf 1.3-1 [444 kB] Get: 41 http://deb.debian.org/debian trixie/main armhf libicu72 armhf 72.1-6 [9086 kB] Get: 42 http://deb.debian.org/debian trixie/main armhf libxml2 armhf 2.12.7+dfsg+really2.9.14-0.2+b1 [605 kB] Get: 43 http://deb.debian.org/debian trixie/main armhf gettext armhf 0.22.5-4 [1489 kB] Get: 44 http://deb.debian.org/debian trixie/main armhf intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 45 http://deb.debian.org/debian trixie/main armhf po-debconf all 1.0.21+nmu1 [248 kB] Get: 46 http://deb.debian.org/debian trixie/main armhf debhelper all 13.23 [919 kB] Get: 47 http://deb.debian.org/debian trixie/main armhf python3-autocommand all 2.2.2-3 [13.6 kB] Get: 48 http://deb.debian.org/debian trixie/main armhf python3-more-itertools all 10.6.0-1 [65.3 kB] Get: 49 http://deb.debian.org/debian trixie/main armhf python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 50 http://deb.debian.org/debian trixie/main armhf python3-typeguard all 4.4.1-1 [37.0 kB] Get: 51 http://deb.debian.org/debian trixie/main armhf python3-inflect all 7.3.1-2 [32.4 kB] Get: 52 http://deb.debian.org/debian trixie/main armhf python3-jaraco.context all 6.0.0-1 [7984 B] Get: 53 http://deb.debian.org/debian trixie/main armhf python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 54 http://deb.debian.org/debian trixie/main armhf python3-pkg-resources all 75.6.0-1 [222 kB] Get: 55 http://deb.debian.org/debian trixie/main armhf python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 56 http://deb.debian.org/debian trixie/main armhf python3-zipp all 3.21.0-1 [10.6 kB] Get: 57 http://deb.debian.org/debian trixie/main armhf python3-setuptools all 75.6.0-1 [720 kB] Get: 58 http://deb.debian.org/debian trixie/main armhf dh-python all 6.20250108 [113 kB] Get: 59 http://deb.debian.org/debian trixie/main armhf libcom-err2 armhf 1.47.2-1 [23.3 kB] Get: 60 http://deb.debian.org/debian trixie/main armhf libdouble-conversion3 armhf 3.3.0-1+b2 [39.2 kB] Get: 61 http://deb.debian.org/debian trixie/main armhf libkrb5support0 armhf 1.21.3-4 [30.3 kB] Get: 62 http://deb.debian.org/debian trixie/main armhf libk5crypto3 armhf 1.21.3-4 [75.8 kB] Get: 63 http://deb.debian.org/debian trixie/main armhf libkeyutils1 armhf 1.6.3-4 [8096 B] Get: 64 http://deb.debian.org/debian trixie/main armhf libkrb5-3 armhf 1.21.3-4 [285 kB] Get: 65 http://deb.debian.org/debian trixie/main armhf libgssapi-krb5-2 armhf 1.21.3-4 [116 kB] Get: 66 http://deb.debian.org/debian trixie/main armhf libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 67 http://deb.debian.org/debian trixie/main armhf libtirpc3t64 armhf 1.3.4+ds-1.3+b1 [71.3 kB] Get: 68 http://deb.debian.org/debian trixie/main armhf libnsl2 armhf 1.3.0-3+b3 [35.0 kB] Get: 69 http://deb.debian.org/debian trixie/main armhf libpython3.12-stdlib armhf 3.12.8-5 [1832 kB] Get: 70 http://deb.debian.org/debian trixie/main armhf libyaml-0-2 armhf 0.2.5-2 [45.4 kB] Get: 71 http://deb.debian.org/debian trixie/main armhf python3-packaging all 24.2-1 [55.3 kB] Get: 72 http://deb.debian.org/debian trixie/main armhf python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 73 http://deb.debian.org/debian trixie/main armhf python3-toml all 0.10.2-1 [16.2 kB] Get: 74 http://deb.debian.org/debian trixie/main armhf python3-wheel all 0.45.1-1 [56.7 kB] Get: 75 http://deb.debian.org/debian trixie/main armhf python3-build all 1.2.2-1 [36.0 kB] Get: 76 http://deb.debian.org/debian trixie/main armhf python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 77 http://deb.debian.org/debian trixie/main armhf pybuild-plugin-pyproject all 6.20250108 [11.6 kB] Get: 78 http://deb.debian.org/debian trixie/main armhf python3.12 armhf 3.12.8-5 [677 kB] Get: 79 http://deb.debian.org/debian trixie/main armhf python3-all armhf 3.13.1-2 [1056 B] Get: 80 http://deb.debian.org/debian trixie/main armhf python3-attr all 24.3.0-1 [68.8 kB] Get: 81 http://deb.debian.org/debian trixie/main armhf python3-bson all 4.10.1-4 [87.1 kB] Get: 82 http://deb.debian.org/debian trixie/main armhf python3-cpuinfo all 9.0.0+git20221119-3 [23.5 kB] Get: 83 http://deb.debian.org/debian trixie/main armhf python3-dateutil all 2.9.0-3 [79.3 kB] Get: 84 http://deb.debian.org/debian trixie/main armhf python3-pathspec all 0.12.1-1 [28.1 kB] Get: 85 http://deb.debian.org/debian trixie/main armhf python3-pluggy all 1.5.0-1 [26.9 kB] Get: 86 http://deb.debian.org/debian trixie/main armhf python3-trove-classifiers all 2024.9.12-1 [10.2 kB] Get: 87 http://deb.debian.org/debian trixie/main armhf python3-hatchling all 1.27.0-1 [47.0 kB] Get: 88 http://deb.debian.org/debian trixie/main armhf python3-setuptools-scm all 8.1.0-1 [40.5 kB] Get: 89 http://deb.debian.org/debian trixie/main armhf python3-hatch-vcs all 0.4.0-1 [8336 B] Get: 90 http://deb.debian.org/debian trixie/main armhf python3-sortedcontainers all 2.4.0-2 [31.9 kB] Get: 91 http://deb.debian.org/debian trixie/main armhf python3-hypothesis all 6.124.0-1 [330 kB] Get: 92 http://deb.debian.org/debian trixie/main armhf python3-iniconfig all 1.1.1-2 [6396 B] Get: 93 http://deb.debian.org/debian trixie/main armhf python3-msgpack armhf 1.0.3-3+b3 [101 kB] Get: 94 http://deb.debian.org/debian trixie/main armhf python3-pytest all 8.3.4-1 [250 kB] Get: 95 http://deb.debian.org/debian trixie/main armhf python3-pytest-benchmark all 5.1.0-1 [44.4 kB] Get: 96 http://deb.debian.org/debian trixie/main armhf python3-tomlkit all 0.13.2-1 [42.7 kB] Get: 97 http://deb.debian.org/debian trixie/main armhf python3-ujson armhf 5.10.0-1+b3 [22.9 kB] Get: 98 http://deb.debian.org/debian trixie/main armhf python3-yaml armhf 6.0.2-1+b1 [158 kB] Fetched 34.3 MB in 1s (30.4 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:armhf. (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 ... 19568 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.1-3_armhf.deb ... Unpacking libpython3.13-minimal:armhf (3.13.1-3) ... Selecting previously unselected package libexpat1:armhf. Preparing to unpack .../libexpat1_2.6.4-1_armhf.deb ... Unpacking libexpat1:armhf (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.1-3_armhf.deb ... Unpacking python3.13-minimal (3.13.1-3) ... Setting up libpython3.13-minimal:armhf (3.13.1-3) ... Setting up libexpat1:armhf (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 ... 19902 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_armhf.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-6_all.deb ... Unpacking tzdata (2024b-6) ... Selecting previously unselected package libffi8:armhf. Preparing to unpack .../4-libffi8_3.4.6-1_armhf.deb ... Unpacking libffi8:armhf (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:armhf. Preparing to unpack .../6-libreadline8t64_8.2-6_armhf.deb ... Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8 to /lib/arm-linux-gnueabihf/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8.2 to /lib/arm-linux-gnueabihf/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8 to /lib/arm-linux-gnueabihf/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8.2 to /lib/arm-linux-gnueabihf/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:armhf (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:armhf. Preparing to unpack .../7-libpython3.13-stdlib_3.13.1-3_armhf.deb ... Unpacking libpython3.13-stdlib:armhf (3.13.1-3) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.1-3_armhf.deb ... Unpacking python3.13 (3.13.1-3) ... Selecting previously unselected package libpython3-stdlib:armhf. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_armhf.deb ... Unpacking libpython3-stdlib:armhf (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 ... 20912 files and directories currently installed.) Preparing to unpack .../00-python3_3.13.1-2_armhf.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package libpython3.12-minimal:armhf. Preparing to unpack .../01-libpython3.12-minimal_3.12.8-5_armhf.deb ... Unpacking libpython3.12-minimal:armhf (3.12.8-5) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../02-python3.12-minimal_3.12.8-5_armhf.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_armhf.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:armhf. Preparing to unpack .../05-libmagic1t64_1%3a5.45-3+b1_armhf.deb ... Unpacking libmagic1t64:armhf (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../06-file_1%3a5.45-3+b1_armhf.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../07-gettext-base_0.22.5-4_armhf.deb ... Unpacking gettext-base (0.22.5-4) ... Selecting previously unselected package libuchardet0:armhf. Preparing to unpack .../08-libuchardet0_0.0.8-1+b2_armhf.deb ... Unpacking libuchardet0:armhf (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../09-groff-base_1.23.0-7_armhf.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../10-bsdextrautils_2.40.4-1_armhf.deb ... Unpacking bsdextrautils (2.40.4-1) ... Selecting previously unselected package libpipeline1:armhf. Preparing to unpack .../11-libpipeline1_1.5.8-1_armhf.deb ... Unpacking libpipeline1:armhf (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../12-man-db_2.13.0-1_armhf.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../13-m4_1.4.19-5_armhf.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.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../23-dh-strip-nondeterminism_1.14.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-1) ... Selecting previously unselected package libelf1t64:armhf. Preparing to unpack .../24-libelf1t64_0.192-4_armhf.deb ... Unpacking libelf1t64:armhf (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../25-dwz_0.15-1+b2_armhf.deb ... Unpacking dwz (0.15-1+b2) ... Selecting previously unselected package libunistring5:armhf. Preparing to unpack .../26-libunistring5_1.3-1_armhf.deb ... Unpacking libunistring5:armhf (1.3-1) ... Selecting previously unselected package libicu72:armhf. Preparing to unpack .../27-libicu72_72.1-6_armhf.deb ... Unpacking libicu72:armhf (72.1-6) ... Selecting previously unselected package libxml2:armhf. Preparing to unpack .../28-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_armhf.deb ... Unpacking libxml2:armhf (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../29-gettext_0.22.5-4_armhf.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.6.0-1_all.deb ... Unpacking python3-more-itertools (10.6.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:armhf. Preparing to unpack .../45-libcom-err2_1.47.2-1_armhf.deb ... Unpacking libcom-err2:armhf (1.47.2-1) ... Selecting previously unselected package libdouble-conversion3:armhf. Preparing to unpack .../46-libdouble-conversion3_3.3.0-1+b2_armhf.deb ... Unpacking libdouble-conversion3:armhf (3.3.0-1+b2) ... Selecting previously unselected package libkrb5support0:armhf. Preparing to unpack .../47-libkrb5support0_1.21.3-4_armhf.deb ... Unpacking libkrb5support0:armhf (1.21.3-4) ... Selecting previously unselected package libk5crypto3:armhf. Preparing to unpack .../48-libk5crypto3_1.21.3-4_armhf.deb ... Unpacking libk5crypto3:armhf (1.21.3-4) ... Selecting previously unselected package libkeyutils1:armhf. Preparing to unpack .../49-libkeyutils1_1.6.3-4_armhf.deb ... Unpacking libkeyutils1:armhf (1.6.3-4) ... Selecting previously unselected package libkrb5-3:armhf. Preparing to unpack .../50-libkrb5-3_1.21.3-4_armhf.deb ... Unpacking libkrb5-3:armhf (1.21.3-4) ... Selecting previously unselected package libgssapi-krb5-2:armhf. Preparing to unpack .../51-libgssapi-krb5-2_1.21.3-4_armhf.deb ... Unpacking libgssapi-krb5-2:armhf (1.21.3-4) ... 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:armhf. Preparing to unpack .../53-libtirpc3t64_1.3.4+ds-1.3+b1_armhf.deb ... Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3 to /lib/arm-linux-gnueabihf/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0 to /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:armhf (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:armhf. Preparing to unpack .../54-libnsl2_1.3.0-3+b3_armhf.deb ... Unpacking libnsl2:armhf (1.3.0-3+b3) ... Selecting previously unselected package libpython3.12-stdlib:armhf. Preparing to unpack .../55-libpython3.12-stdlib_3.12.8-5_armhf.deb ... Unpacking libpython3.12-stdlib:armhf (3.12.8-5) ... Selecting previously unselected package libyaml-0-2:armhf. Preparing to unpack .../56-libyaml-0-2_0.2.5-2_armhf.deb ... Unpacking libyaml-0-2:armhf (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_armhf.deb ... Unpacking python3.12 (3.12.8-5) ... Selecting previously unselected package python3-all. Preparing to unpack .../65-python3-all_3.13.1-2_armhf.deb ... Unpacking python3-all (3.13.1-2) ... Selecting previously unselected package python3-attr. Preparing to unpack .../66-python3-attr_24.3.0-1_all.deb ... Unpacking python3-attr (24.3.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-3_all.deb ... Unpacking python3-cpuinfo (9.0.0+git20221119-3) ... 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.124.0-1_all.deb ... Unpacking python3-hypothesis (6.124.0-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_armhf.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:armhf. Preparing to unpack .../83-python3-ujson_5.10.0-1+b3_armhf.deb ... Unpacking python3-ujson:armhf (5.10.0-1+b3) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../84-python3-yaml_6.0.2-1+b1_armhf.deb ... Unpacking python3-yaml (6.0.2-1+b1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:armhf (1.5.8-1) ... Setting up libdouble-conversion3:armhf (3.3.0-1+b2) ... Setting up libkeyutils1:armhf (1.6.3-4) ... Setting up libicu72:armhf (72.1-6) ... Setting up bsdextrautils (2.40.4-1) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:armhf (0.2.5-2) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libdebhelper-perl (13.23) ... Setting up libmagic1t64:armhf (1:5.45-3+b1) ... Setting up libpython3.12-minimal:armhf (3.12.8-5) ... Setting up gettext-base (0.22.5-4) ... Setting up m4 (1.4.19-5) ... Setting up libcom-err2:armhf (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up libelf1t64:armhf (0.192-4) ... Setting up libkrb5support0:armhf (1.21.3-4) ... Setting up tzdata (2024b-6) ... Current default time zone: 'Etc/UTC' Local time is now: Tue Jan 28 13:39:08 UTC 2025. Universal Time is now: Tue Jan 28 13:39:08 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libunistring5:armhf (1.3-1) ... Setting up autopoint (0.22.5-4) ... Setting up libk5crypto3:armhf (1.21.3-4) ... Setting up autoconf (2.72-3) ... Setting up libffi8:armhf (3.4.6-1) ... Setting up dwz (0.15-1+b2) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:armhf (0.0.8-1+b2) ... Setting up netbase (6.4) ... Setting up libkrb5-3:armhf (1.21.3-4) ... Setting up readline-common (8.2-6) ... Setting up libxml2:armhf (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.1-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:armhf (1.21.3-4) ... Setting up libreadline8t64:armhf (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-1) ... Setting up groff-base (1.23.0-7) ... Setting up libpython3.13-stdlib:armhf (3.13.1-3) ... Setting up libpython3-stdlib:armhf (3.13.1-2) ... Setting up libtirpc3t64:armhf (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:armhf (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-3) ... 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:armhf (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.6.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-attr (24.3.0-1) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up libpython3.12-stdlib:armhf (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.124.0-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-6) ... 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 armhf dpkg-source: info: using options from python-cattrs-23.2.3/debian/source/options: --extend-diff-ignore=^[^/]+.egg-info/ fakeroot 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 build dh build --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 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')) 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) rootdir: /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.12_cattr/build configfile: pyproject.toml plugins: hypothesis-6.124.0, benchmark-5.1.0, 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 PASSED [ 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 PASSED [ 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 PASSED [ 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 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 PASSED [ 70%] tests/test_converter.py::test_nested_roundtrip_tuple PASSED [ 70%] tests/test_converter.py::test_union_field_roundtrip PASSED [ 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 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 PASSED [ 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 0xb57dde88> 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=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, (-nan,), {}), E strat=UnstructureStrategy.AS_DICT, # or any other generated value E ) cl = cls_and_vals = (, (nan,), {}) converter = inst = HypAttrsClass(a=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 0xb57d1208> 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=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_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, (-nan,), {}), E ) cl = cls_and_vals = (, (nan,), {}) converter = inst = HypClass(a=nan) kwargs = {} vals = (nan,) tests/test_baseconverter.py:54: 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 0xb57d16b8> tests/test_baseconverter.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, ('', []), {'_f': 0, 'd': nan, 'g': 0, 'i': []}) 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..., g=0, _h=[])) == C(a=HypAttrsC..., g=0, _h=[])) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a='', _b=[], _d=nan, e=0, g=0, _h=[]) != HypAttrsClass(a='', _b=[], _d=nan, e=0, g=0, _h=[]) 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={})] 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={})} 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 ('', []), E {'d': nan, '_f': 0, 'g': 0, 'i': []}), 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', 'a', 'e', 'g'} b_field_names = {'a'} cl_a = cl_and_vals_a = (, ('', []), {'_f': 0, 'd': nan, 'g': 0, 'i': []}) cl_and_vals_b = (, (None,), {}) cl_b = common_names = {'a'} converter = inst = C(a=HypAttrsClass(a='', _b=[], _d=nan, e=0, g=0, _h=[])) kwargs_a = {'_f': 0, 'd': nan, 'g': 0, 'i': []} strat = vals_a = ('', []) 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 0xb57d1938> tests/test_baseconverter.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, (0, 0, {}, {}, {}, frozenset(), ...), {'_l': 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...('', '', ''))) == C(a=HypAttrsC...('', '', ''))) 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=frozenset(), _j=frozenset(), k=nan, m=('', '', '')) != HypAttrsClass(a=0, _b=0, _d={}, e={}, g={}, _h=frozenset(), _j=frozenset(), k=nan, 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, {}, {}, {}, frozenset(), frozenset()), E {'_l': struct.unpack('d', struct.pack('Q', 0xfff8000000000001))[0], 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, {}, {}, {}, frozenset(), ...), {'_l': 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=frozenset(), _j=frozenset(), k=nan, m=('', '', ''))) kwargs_a = {'_l': nan, 'm': ('', '', '')} strat = vals_a = (0, 0, {}, {}, {}, frozenset(), ...) vals_b = (None,) tests/test_baseconverter.py:142: 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 0xb57d1ca8> 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=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_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='', _b=nan)) kwargs = {} vals = ('', nan) tests/test_baseconverter.py:190: 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 0xb57d04d8> tests/test_converter.py:88: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attr_and_vals = (_CountingAttr(counter=34305, _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=34305, 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=34305, _default=nan, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}) attr_and_vals = (_CountingAttr(counter=34305, _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_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 1824, 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... e=[], g=nan)) == C(a=HypAttrsC... e=[], g=nan)) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=frozenset(), _d=[], e=[], g=nan) != HypAttrsClass(a=0, _b=frozenset(), _d=[], e=[], g=nan) | ... | | ...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_310_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, frozenset(), [], [], -nan), | {}), | 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 308, in test_310_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(unstructured), C) | AssertionError: assert C(a=HypAttrsC... e=[], g=nan)) == C(a=HypAttrsC... e=[], g=nan)) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=frozenset(), _d=[], e=[], g=nan) != HypAttrsClass(a=0, _b=frozenset(), _d=[], e=[], g=nan) | ... | | ...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_310_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, frozenset(), [], [], -nan), | {}), | 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 0xb57ca2f8> 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 ) 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 0xb57ca028> 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 ) 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: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 0xb57ca708> tests/test_converter.py:366: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}) @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': {'a': nan}} == {} E E Left contains 1 more item: E {'b': {'a': 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.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.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, (-nan,), {}), 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 = (, (nan,), {}) converter = inst = C(a=1, b=HypAttrsClass(a=nan)) kwargs = {} unstructured = {'b': {'a': nan}} vals = (nan,) tests/test_converter.py:380: 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 0xb55b22f8> tests/test_gen_dict.py:166: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (nan,), {}), 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 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_unmodified_generated_structuring( E cl_and_vals=(tests.typed.HypAttrsClass, (nan,), {}), E dv=False, # or any other generated value E ) cl = cl_and_vals = (, (nan,), {}) converter = dv = False fn = inst = HypAttrsClass(a=nan) kwargs = {} res = HypAttrsClass(a=nan) unstructured = {'a': nan} vals = (nan,) tests/test_gen_dict.py:186: 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_union_field_roundtrip - AssertionErr... FAILED tests/test_baseconverter.py::test_310_union_field_roundtrip - Assertio... FAILED tests/test_baseconverter.py::test_310_optional_field_roundtrip - Asser... FAILED tests/test_converter.py::test_simple_roundtrip_defaults_tuple - Assert... 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_unmodified_generated_structuring - Assert... ====== 11 failed, 566 passed, 15 xfailed, 2 warnings in 972.61s (0:16:12) ====== 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 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')) 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) rootdir: /build/reproducible-path/python-cattrs-23.2.3/.pybuild/cpython3_3.13_cattr/build configfile: pyproject.toml plugins: hypothesis-6.124.0, benchmark-5.1.0, 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 PASSED [ 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 FAILED [ 69%] tests/test_converter.py::test_simple_roundtrip_defaults_tuple PASSED [ 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 PASSED [ 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 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 PASSED [ 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_nested_roundtrip _____________________________ @given(nested_typed_classes(newtypes=False)) > def test_nested_roundtrip(cls_and_vals): f = .run_test_as_given..wrapped_test at 0xb566fed8> 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=nan) == HypClass(a=[], _b=[], c=nan) E E Omitting 2 identical items, use -vv to show E Differing attributes: E ['c'] E E Drill down into differing attribute c: E c: nan != nan E Falsifying example: test_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, ([], [], -nan), {}), E ) cl = cls_and_vals = (, ([], [], nan), {}) converter = inst = HypClass(a=[], _b=[], c=nan) kwargs = {} vals = ([], [], 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 0xb56410c8> tests/test_baseconverter.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=0, _b=('', '', ''), c={}, _d=nan)],), {}) @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...={}, _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 ) 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: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=0, _b=('', '', ''), c={}, _d=nan)],), {}) converter = inst = HypClass(a=[HypClass(a=0, _b=('', '', ''), c={}, _d=nan)]) kwargs = {} vals = ([HypClass(a=0, _b=('', '', ''), c={}, _d=nan)],) 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.13_cattr/build/tests/test_baseconverter.py", line 71, in test_union_field_roundtrip | @given( | | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1824, 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_baseconverter.py", line 109, in test_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(inst), C) | AssertionError: assert C(a=HypAttrsC...('', '', ''))) == C(a=HypAttrsC...('', '', ''))) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=nan, _b=0, _d='', e=frozenset(), g=[], _h=frozenset(), _j=frozenset(), k=('', '', '')) != HypAttrsClass(a=nan, _b=0, _d='', e=frozenset(), g=[], _h=frozenset(), _j=frozenset(), k=('', '', '')) | ... | | ...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={})] | 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={})} | 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, 0, '', frozenset(), [], 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.13_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...('', '', ''))) == C(a=HypAttrsC...('', '', ''))) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=nan, _b=0, _d='', e=frozenset(), g=[], _h=frozenset(), _j=frozenset(), k=('', '', '')) != HypAttrsClass(a=nan, _b=0, _d='', e=frozenset(), g=[], _h=frozenset(), _j=frozenset(), k=('', '', '')) | ... | | ...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={})] | 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={})} | 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, 0, '', frozenset(), [], frozenset(), frozenset(), ('', '', '')), | {}), | cl_and_vals_b=(tests.typed.HypAttrsClass, | (None,), | {}), # or any other generated value | strat=UnstructureStrategy.AS_DICT, # or any other generated value | ) | Explanation: | These lines were always and only run by failing examples: | /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py:250 +------------------------------------ ________________________ 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 0xb5674ac8> tests/test_baseconverter.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals_a = (, (0, 0, frozenset(), ('', '', ''), {}, frozenset()), {'_l': frozenset(), 'j': 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...('', '', ''))) == C(a=HypAttrsC...('', '', ''))) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=0, _b=0, _d=frozenset(), e=('', '', ''), g={}, _h=frozenset(), _j=nan, k=frozenset(), m=('', '', '')) != HypAttrsClass(a=0, _b=0, _d=frozenset(), e=('', '', ''), g={}, _h=frozenset(), _j=nan, k=frozenset(), 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, frozenset(), ('', '', ''), {}, frozenset()), E {'j': struct.unpack('d', struct.pack('Q', 0xfff8000000000001))[0], E '_l': frozenset(), 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 ) C = .C'> _ = {} a_field_names = {'_b', '_d', '_h', '_j', 'a', 'e', ...} b_field_names = {'a'} cl_a = cl_and_vals_a = (, (0, 0, frozenset(), ('', '', ''), {}, frozenset()), {'_l': frozenset(), 'j': nan, 'm': ('', '', '')}) cl_and_vals_b = (, (None,), {}) cl_b = common_names = {'a'} converter = inst = C(a=HypAttrsClass(a=0, _b=0, _d=frozenset(), e=('', '', ''), g={}, _h=frozenset(), _j=nan, k=frozenset(), m=('', '', ''))) kwargs_a = {'_l': frozenset(), 'j': nan, 'm': ('', '', '')} strat = vals_a = (0, 0, frozenset(), ('', '', ''), {}, 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 0xb5676258> 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, (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: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 0xb56769d8> 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 ) 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 _____________________________ @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 0xb57372a8> 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..._b=[], _d=nan) == HypAttrsClass..._b=[], _d=nan) E E Omitting 2 identical items, use -vv to show E Differing attributes: E ['_d'] E E Drill down into differing attribute _d: E _d: 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={})] 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_simple_roundtrip( E cls_and_vals=(tests.typed.HypAttrsClass, ('', [], nan), {}), E detailed_validation=False, # or any other generated value E ) cl = cls_and_vals = (, ('', [], nan), {}) converter = detailed_validation = False inst = HypAttrsClass(a='', _b=[], _d=nan) kwargs = {} unstructured = {'_b': [], '_d': nan, 'a': ''} 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 0xb5737f28> 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_simple_roundtrip_defaults ________________________ @given(simple_typed_attrs(defaults=True)) > def test_simple_roundtrip_defaults(attr_and_vals): f = .run_test_as_given..wrapped_test at 0xb570c5c8> tests/test_converter.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ attr_and_vals = (_CountingAttr(counter=35024, _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)) def test_simple_roundtrip_defaults(attr_and_vals): """ Simple classes with metadata can be unstructured and restructured. """ a, _ = attr_and_vals cl = make_class("HypClass", {"a": a}) converter = Converter() 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( E attr_and_vals=(_CountingAttr(counter=35024, 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=35024, _default=nan, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}) attr_and_vals = (_CountingAttr(counter=35024, _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:84: 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 0xb5725898> 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=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_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=nan) kwargs = {} strat = unstructured = {'a': nan} 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 0xb5716f78> tests/test_converter.py:203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, (nan, [HypClass(a=None)]), {}) 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=na...lass(a=None)]) == HypClass(a=na...lass(a=None)]) E E Omitting 1 identical items, use -vv to show E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: nan != nan E Falsifying example: test_nested_roundtrip( E cls_and_vals=(tests.typed.HypClass, (nan, [HypClass(a=None)]), {}), 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 = (, (nan, [HypClass(a=None)]), {}) converter = inst = HypClass(a=nan, _b=[HypClass(a=None)]) kwargs = {} omit_if_default = False unstructured = {'_b': [{'a': None}], 'a': nan} vals = (nan, [HypClass(a=None)]) 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 0xb5705168> tests/test_converter.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls_and_vals = (, ([HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=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...''), _f=nan)]) == HypClass(a=[H...''), _f=nan)]) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: [HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=nan)] != [HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=nan)] E At index 0 diff: HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=nan) != HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=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=frozenset(), E _b=frozenset(), E c=[], E _d=[], E e=('', '', ''), E _f=-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/dist-packages/_pytest/_io/terminalwriter.py:250 _ = {} cl = cls_and_vals = (, ([HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=nan)],), {}) converter = inst = HypClass(a=[HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=nan)]) omit_if_default = False unstructured = ([(frozenset(), frozenset(), [], [], ['', '', ''], nan)],) vals = ([HypClass(a=frozenset(), _b=frozenset(), c=[], _d=[], e=('', '', ''), _f=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.13_cattr/build/tests/test_converter.py", line 234, in test_union_field_roundtrip | @given( | | File "/usr/lib/python3/dist-packages/hypothesis/core.py", line 1824, 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 274, in test_union_field_roundtrip | assert inst == converter.structure(unstructured, C) | AssertionError: assert C(a=HypAttrsC...('', '', ''))) == C(a=HypAttrsC...('', '', ''))) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=nan, _d=[], e=frozenset(), g=('', '', ''), _h=('', '', ''), _j=('', '', ''), k=('', '', '')) != HypAttrsClass(a=0, _b=nan, _d=[], e=frozenset(), g=('', '', ''), _h=('', '', ''), _j=('', '', ''), k=('', '', '')) | ... | | ...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={})] | 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={})} | 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, | struct.unpack('d', struct.pack('Q', 0xfff8000000000001))[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 263, in test_union_field_roundtrip | assert inst == converter.structure(converter.unstructure(unstructured), C) | AssertionError: assert C(a=HypAttrsC...('', '', ''))) == C(a=HypAttrsC...('', '', ''))) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=nan, _d=[], e=frozenset(), g=('', '', ''), _h=('', '', ''), _j=('', '', ''), k=('', '', '')) != HypAttrsClass(a=0, _b=nan, _d=[], e=frozenset(), g=('', '', ''), _h=('', '', ''), _j=('', '', ''), k=('', '', '')) | ... | | ...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={})] | 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={})} | 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, | struct.unpack('d', struct.pack('Q', 0xfff8000000000001))[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_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 1824, 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...z={}, ab=nan)) == C(a=HypAttrsC...z={}, ab=nan)) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d=0, e='', g=('', '', ''), _h={}, _j={}, k={}, m=[], _n=[], _p=[], q=[], s=frozenset(), _t=frozenset(), _v=frozenset(), w=frozenset(), y=('', '', ''), _z={}, ab=nan) != HypAttrsClass(a=0, _b=0, _d=0, e='', g=('', '', ''), _h={}, _j={}, k={}, m=[], _n=[], _p=[], q=[], s=frozenset(), _t=frozenset(), _v=frozenset(), w=frozenset(), y=('', '', ''), _z={}, ab=nan) | ... | | ...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={}), _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={}), _CountingAttr(counter=16, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=17, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=18, _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={}), '_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={}), 'y': _CountingAttr(counter=16, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_z': _CountingAttr(counter=17, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='aa', metadata={}), 'ab': _CountingAttr(counter=18, _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_310_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, | 0, | 0, | '', | ('', '', ''), | {}, | {}, | {}, | [], | [], | [], | [], | frozenset(), | frozenset(), | frozenset(), | frozenset(), | ('', '', ''), | {}, | nan), | {}), | 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...z={}, ab=nan)) == C(a=HypAttrsC...z={}, ab=nan)) | | Differing attributes: | ['a'] | | Drill down into differing attribute a: | a: HypAttrsClass(a=0, _b=0, _d=0, e='', g=('', '', ''), _h={}, _j={}, k={}, m=[], _n=[], _p=[], q=[], s=frozenset(), _t=frozenset(), _v=frozenset(), w=frozenset(), y=('', '', ''), _z={}, ab=nan) != HypAttrsClass(a=0, _b=0, _d=0, e='', g=('', '', ''), _h={}, _j={}, k={}, m=[], _n=[], _p=[], q=[], s=frozenset(), _t=frozenset(), _v=frozenset(), w=frozenset(), y=('', '', ''), _z={}, ab=nan) | ... | | ...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={}), _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={}), _CountingAttr(counter=16, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=17, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), _CountingAttr(counter=18, _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={}), '_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={}), 'y': _CountingAttr(counter=16, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, metadata={}), '_z': _CountingAttr(counter=17, _default=NOTHING, repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, alias='aa', metadata={}), 'ab': _CountingAttr(counter=18, _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_310_union_field_roundtrip( | # The test always failed when commented parts were varied together. | cl_and_vals_a=(tests.typed.HypAttrsClass, | (0, | 0, | 0, | '', | ('', '', ''), | {}, | {}, | {}, | [], | [], | [], | [], | frozenset(), | frozenset(), | frozenset(), | frozenset(), | ('', '', ''), | {}, | nan), | {}), | 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 0xb56ff2a8> tests/test_converter.py:323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, ([], frozenset(), frozenset(), 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...set(), e=nan)) == C(a=HypAttrsC...set(), e=nan)) E E Differing attributes: E ['a'] E E Drill down into differing attribute a: E a: HypAttrsClass(a=[], _b=frozenset(), _d=frozenset(), e=nan) != HypAttrsClass(a=[], _b=frozenset(), _d=frozenset(), e=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={})] 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={})} E Falsifying example: test_optional_field_roundtrip( E cl_and_vals=(tests.typed.HypAttrsClass, E ([], 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(), nan), {}) converter = inst = C(a=HypAttrsClass(a=[], _b=frozenset(), _d=frozenset(), e=nan)) kwargs = {} vals = ([], frozenset(), frozenset(), nan) tests/test_converter.py:335: 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 0xb55934d8> tests/test_gen_dict.py:166: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cl_and_vals = (, (frozenset(), frozenset(), nan), {}) 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 HypAttrsClass...set(), _d=nan) == HypAttrsClass...set(), _d=nan) E E Omitting 2 identical items, use -vv to show E Differing attributes: E ['_d'] E E Drill down into differing attribute _d: E _d: 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={})] 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_unmodified_generated_structuring( E cl_and_vals=(tests.typed.HypAttrsClass, E (frozenset(), frozenset(), -nan), E {}), E dv=False, # or any other generated value E ) cl = cl_and_vals = (, (frozenset(), frozenset(), nan), {}) converter = dv = False fn = inst = HypAttrsClass(a=frozenset(), _b=frozenset(), _d=nan) kwargs = {} res = HypAttrsClass(a=frozenset(), _b=frozenset(), _d=nan) unstructured = {'_b': frozenset(), '_d': nan, 'a': frozenset()} vals = (frozenset(), frozenset(), nan) tests/test_gen_dict.py:186: 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 0xb558c3e8> 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 =============================== 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_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 - AssertionErr... 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_gen_dict.py::test_unmodified_generated_structuring - Assert... FAILED tests/test_gen_dict.py::test_renaming - AssertionError: assert HypAttr... ===== 17 failed, 560 passed, 15 xfailed, 2 warnings in 1533.22s (0:25:33) ====== 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: build] Error 25 dpkg-buildpackage: error: debian/rules build 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/20972 and its subdirectories Tue Jan 28 14:22:37 UTC 2025 W: No second build log, what happened?