Warning: Permanently added '13.220.112.247' (ED25519) to the list of known hosts. Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-1_gmna7g/python-flask-sqlalchemy/python-flask-sqlalchemy.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-1_gmna7g/python-flask-sqlalchemy --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1747220931.871542 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 6.1 starting (python version = 3.13.0, NVR = mock-6.1-1.fc41), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-1_gmna7g/python-flask-sqlalchemy/python-flask-sqlalchemy.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-1_gmna7g/python-flask-sqlalchemy --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1747220931.871542 -r /var/lib/copr-rpmbuild/results/configs/child.cfg Start: init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish: init plugins INFO: Signal handler active Start: run INFO: Start(/var/lib/copr-rpmbuild/workspace/workdir-1_gmna7g/python-flask-sqlalchemy/python-flask-sqlalchemy.spec) Config(fedora-rawhide-x86_64) Start: clean chroot Finish: clean chroot Mock Version: 6.1 INFO: Mock Version: 6.1 Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-1747220931.871542/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Package manager dnf5 detected and used (fallback) INFO: Buildroot is handled by package management from host and used with --installroot: rpm-4.20.1-1.fc41.x86_64 rpm-sequoia-1.7.0-2.fc41.x86_64 python3-dnf-4.23.0-1.fc41.noarch python3-dnf-plugins-core-4.10.1-1.fc41.noarch dnf5-5.2.13.1-1.fc41.x86_64 dnf5-plugins-5.2.13.1-1.fc41.x86_64 Start: installing minimal buildroot with dnf5 Updating and loading repositories: fedora 100% | 937.5 KiB/s | 27.2 KiB | 00m00s Copr repository 100% | 96.1 KiB/s | 1.5 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 225.2 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 47.2 MiB/s | 5.0 MiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing group/module packages: bash x86_64 5.2.37-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.2 MiB bzip2 x86_64 1.0.8-20.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 99.3 KiB coreutils x86_64 9.7-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 5.4 MiB cpio x86_64 2.15-2.fc41 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB diffutils x86_64 3.12-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB fedora-release-common noarch 43-0.15 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 20.4 KiB findutils x86_64 1:4.10.0-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB gawk x86_64 5.3.2-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.8 MiB glibc-minimal-langpack x86_64 2.41.9000-12.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B grep x86_64 3.12-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB gzip x86_64 1.13-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 392.9 KiB info x86_64 7.2-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 357.9 KiB patch x86_64 2.8-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 226.8 KiB redhat-rpm-config noarch 343-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 181.5 KiB rpm-build x86_64 5.99.90-5.fc43 copr_base 281.7 KiB sed x86_64 4.9-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 857.3 KiB shadow-utils x86_64 2:4.17.4-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.0 MiB tar x86_64 2:1.35-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.0 MiB unzip x86_64 6.0-66.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 390.3 KiB util-linux x86_64 2.41-2.fc43 copr_base 3.5 MiB which x86_64 2.23-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 83.4 KiB xz x86_64 1:5.8.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 MiB Installing dependencies: add-determinism x86_64 0.6.0-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.5 MiB alternatives x86_64 1.33-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 62.2 KiB ansible-srpm-macros noarch 1-17.1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 35.7 KiB audit-libs x86_64 4.0.3-2.fc43 copr_base 347.1 KiB binutils x86_64 2.44-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 25.9 MiB build-reproducibility-srpm-macros noarch 0.6.0-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 735.0 B bzip2-libs x86_64 1.0.8-20.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 84.6 KiB ca-certificates noarch 2024.2.69_v8.0.401-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.6 MiB coreutils-common x86_64 9.7-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.3 MiB crypto-policies noarch 20250402-2.git86c0178.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 141.5 KiB curl x86_64 8.14.0~rc1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 473.2 KiB cyrus-sasl-lib x86_64 2.1.28-30.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.3 MiB debugedit x86_64 5.1-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 192.7 KiB dwz x86_64 0.15-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 291.0 KiB ed x86_64 1.21-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 146.5 KiB efi-srpm-macros noarch 6-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 40.1 KiB elfutils x86_64 0.193-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.9 MiB elfutils-debuginfod-client x86_64 0.193-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 83.9 KiB elfutils-default-yama-scope noarch 0.193-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.8 KiB elfutils-libelf x86_64 0.193-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB elfutils-libs x86_64 0.193-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 683.4 KiB fedora-gpg-keys noarch 43-0.2 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 129.0 KiB fedora-release noarch 43-0.15 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B fedora-release-identity-basic noarch 43-0.15 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 664.0 B fedora-repos noarch 43-0.2 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.9 KiB fedora-repos-rawhide noarch 43-0.2 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 KiB file x86_64 5.46-1.fc43 copr_base 100.2 KiB file-libs x86_64 5.46-1.fc43 copr_base 11.9 MiB filesystem x86_64 3.18-44.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.0 B filesystem-srpm-macros noarch 3.18-44.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.2 KiB fonts-srpm-macros noarch 1:2.0.5-21.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 55.8 KiB forge-srpm-macros noarch 0.4.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.9 KiB fpc-srpm-macros noarch 1.3-14.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 144.0 B gdb-minimal x86_64 16.3-1.fc43 copr_base 13.2 MiB gdbm-libs x86_64 1:1.23-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 129.9 KiB ghc-srpm-macros noarch 1.9.2-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 779.0 B glibc x86_64 2.41.9000-12.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.7 MiB glibc-common x86_64 2.41.9000-12.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB glibc-gconv-extra x86_64 2.41.9000-12.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 7.2 MiB gmp x86_64 1:6.3.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 819.2 KiB gnat-srpm-macros noarch 6-7.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 KiB gnupg2 x86_64 2.4.7-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 9.8 MiB gnutls x86_64 3.8.9-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.6 MiB go-srpm-macros noarch 3.6.0-7.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 60.8 KiB gpgverify noarch 2.1-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.7 KiB ima-evm-utils-libs x86_64 1.6.2-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 60.7 KiB jansson x86_64 2.14-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 93.1 KiB json-c x86_64 0.18-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 86.7 KiB kernel-srpm-macros noarch 1.0-25.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB keyutils-libs x86_64 1.6.3-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 58.3 KiB krb5-libs x86_64 1.21.3-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.3 MiB libacl x86_64 2.3.2-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.3 KiB libarchive x86_64 3.7.7-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 930.6 KiB libassuan x86_64 2.5.7-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 167.8 KiB libattr x86_64 2.5.2-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 27.1 KiB libblkid x86_64 2.41-2.fc43 copr_base 262.4 KiB libbrotli x86_64 1.1.0-6.fc43 copr_base 833.3 KiB libcap x86_64 2.76-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 209.2 KiB libcap-ng x86_64 0.8.5-4.fc43 copr_base 68.9 KiB libcom_err x86_64 1.47.2-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.1 KiB libcurl x86_64 8.14.0~rc1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 891.0 KiB libeconf x86_64 0.7.6-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 64.6 KiB libevent x86_64 2.1.12-15.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 903.1 KiB libfdisk x86_64 2.41-2.fc43 copr_base 376.4 KiB libffi x86_64 3.4.8-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 83.0 KiB libfsverity x86_64 1.6-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 32.5 KiB libgcc x86_64 15.1.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 266.6 KiB libgcrypt x86_64 1.11.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB libgomp x86_64 15.1.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 538.5 KiB libgpg-error x86_64 1.55-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 915.3 KiB libidn2 x86_64 2.3.8-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 552.5 KiB libksba x86_64 1.6.7-3.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 402.5 KiB liblastlog2 x86_64 2.41-2.fc43 copr_base 33.9 KiB libmount x86_64 2.41-2.fc43 copr_base 372.7 KiB libnghttp2 x86_64 1.65.0-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 162.2 KiB libpkgconf x86_64 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 78.1 KiB libpsl x86_64 0.21.5-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 76.4 KiB libselinux x86_64 3.8-1.fc43 copr_base 193.1 KiB libsemanage x86_64 3.8-1.fc43 copr_base 304.4 KiB libsepol x86_64 3.8-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 826.0 KiB libsmartcols x86_64 2.41-2.fc43 copr_base 180.5 KiB libssh x86_64 0.11.1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 565.5 KiB libssh-config noarch 0.11.1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 277.0 B libstdc++ x86_64 15.1.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.8 MiB libtasn1 x86_64 4.20.0-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 176.3 KiB libtool-ltdl x86_64 2.5.4-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 70.1 KiB libunistring x86_64 1.1-9.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.7 MiB libusb1 x86_64 1.0.28-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 171.0 KiB libuuid x86_64 2.41-2.fc43 copr_base 37.3 KiB libverto x86_64 0.3.2-10.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 25.4 KiB libxcrypt x86_64 4.4.38-7.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 284.5 KiB libxml2 x86_64 2.12.10-1.fc43 copr_base 1.7 MiB libzstd x86_64 1.5.7-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 807.8 KiB lua-libs x86_64 5.4.7-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 276.9 KiB lua-srpm-macros noarch 1-15.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 KiB lz4-libs x86_64 1.10.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 157.4 KiB mpfr x86_64 4.2.2-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 828.8 KiB ncurses-base noarch 6.5-5.20250125.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 326.8 KiB ncurses-libs x86_64 6.5-5.20250125.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 946.3 KiB nettle x86_64 3.10.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 790.5 KiB npth x86_64 1.8-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 49.6 KiB ocaml-srpm-macros noarch 10-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB openblas-srpm-macros noarch 2-19.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.0 B openldap x86_64 2.6.9-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 655.1 KiB openssl-libs x86_64 1:3.5.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.9 MiB p11-kit x86_64 0.25.5-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 MiB p11-kit-trust x86_64 0.25.5-5.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 395.5 KiB package-notes-srpm-macros noarch 0.5-13.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 KiB pam-libs x86_64 1.7.0-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 126.7 KiB pcre2 x86_64 10.45-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 697.7 KiB pcre2-syntax noarch 10.45-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 273.9 KiB perl-srpm-macros noarch 1-57.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 861.0 B pkgconf x86_64 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 88.5 KiB pkgconf-m4 noarch 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 14.4 KiB pkgconf-pkg-config x86_64 2.3.0-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 989.0 B popt x86_64 1.19-8.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 132.8 KiB publicsuffix-list-dafsa noarch 20250116-1.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.5 KiB pyproject-srpm-macros noarch 1.18.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB python-srpm-macros noarch 3.14-5.fc43 copr_base 51.7 KiB qt5-srpm-macros noarch 5.15.16-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 500.0 B qt6-srpm-macros noarch 6.9.0-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 464.0 B readline x86_64 8.2-13.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 485.0 KiB rpm x86_64 5.99.90-5.fc43 copr_base 3.1 MiB rpm-build-libs x86_64 5.99.90-5.fc43 copr_base 264.4 KiB rpm-libs x86_64 5.99.90-5.fc43 copr_base 929.8 KiB rpm-sequoia x86_64 1.8.0-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.5 MiB rpm-sign-libs x86_64 5.99.90-5.fc43 copr_base 39.7 KiB rust-srpm-macros noarch 26.3-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.8 KiB setup noarch 2.15.0-24.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 724.7 KiB sqlite-libs x86_64 3.49.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.5 MiB systemd-libs x86_64 257.5-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 MiB systemd-standalone-sysusers x86_64 257.5-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 277.3 KiB tpm2-tss x86_64 4.1.3-7.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB tree-sitter-srpm-macros noarch 0.2.4-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 7.5 KiB util-linux-core x86_64 2.41-2.fc43 copr_base 1.4 MiB xxhash-libs x86_64 0.8.3-2.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 90.2 KiB xz-libs x86_64 1:5.8.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 217.8 KiB zig-srpm-macros noarch 1-4.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 KiB zip x86_64 3.0-43.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 698.5 KiB zlib-ng-compat x86_64 2.2.4-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 137.6 KiB zstd x86_64 1.5.7-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.7 MiB Installing groups: Buildsystem building group Transaction Summary: Installing: 163 packages Total size of inbound packages is 58 MiB. Need to download 0 B. After this operation, 198 MiB extra will be used (install 198 MiB, remove 0 B). [ 1/163] tar-2:1.35-5.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 2/163] bzip2-0:1.0.8-20.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 3/163] redhat-rpm-config-0:343-5.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 4/163] rpm-build-0:5.99.90-5.fc43.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 5/163] unzip-0:6.0-66.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 6/163] cpio-0:2.15-2.fc41.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 7/163] which-0:2.23-1.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 8/163] bash-0:5.2.37-3.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 9/163] coreutils-0:9.7-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 10/163] grep-0:3.12-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 11/163] patch-0:2.8-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 12/163] sed-0:4.9-4.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 13/163] shadow-utils-2:4.17.4-1.fc43. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 14/163] util-linux-0:2.41-2.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 15/163] diffutils-0:3.12-2.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 16/163] fedora-release-common-0:43-0. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 17/163] findutils-1:4.10.0-5.fc42.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 18/163] gawk-0:5.3.2-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 19/163] glibc-minimal-langpack-0:2.41 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 20/163] gzip-0:1.13-3.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 21/163] info-0:7.2-3.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 22/163] xz-1:5.8.1-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 23/163] libblkid-0:2.41-2.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 24/163] libfdisk-0:2.41-2.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 25/163] liblastlog2-0:2.41-2.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 26/163] libmount-0:2.41-2.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 27/163] libsmartcols-0:2.41-2.fc43.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 28/163] libuuid-0:2.41-2.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 29/163] util-linux-core-0:2.41-2.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 30/163] filesystem-0:3.18-44.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 31/163] glibc-0:2.41.9000-12.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 32/163] libgcc-0:15.1.1-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 33/163] libselinux-0:3.8-1.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 34/163] libxcrypt-0:4.4.38-7.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 35/163] ncurses-libs-0:6.5-5.20250125 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 36/163] systemd-libs-0:257.5-5.fc43.x 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 37/163] audit-libs-0:4.0.3-2.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 38/163] libcap-ng-0:0.8.5-4.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 39/163] pam-libs-0:1.7.0-4.fc42.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 40/163] readline-0:8.2-13.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 41/163] zlib-ng-compat-0:2.2.4-2.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 42/163] binutils-0:2.44-3.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 43/163] debugedit-0:5.1-6.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 44/163] elfutils-0:0.193-2.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 45/163] elfutils-libelf-0:0.193-2.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 46/163] file-0:5.46-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 47/163] file-libs-0:5.46-1.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 48/163] libarchive-0:3.7.7-4.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 49/163] libstdc++-0:15.1.1-1.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 50/163] pkgconf-pkg-config-0:2.3.0-2. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 51/163] popt-0:1.19-8.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 52/163] rpm-0:5.99.90-5.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 53/163] rpm-build-libs-0:5.99.90-5.fc 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 54/163] rpm-libs-0:5.99.90-5.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 55/163] zstd-0:1.5.7-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 56/163] curl-0:8.14.0~rc1-1.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 57/163] libsepol-0:3.8-1.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 58/163] pcre2-0:10.45-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 59/163] sqlite-libs-0:3.49.1-1.fc43.x 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 60/163] lz4-libs-0:1.10.0-2.fc42.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 61/163] xz-libs-1:5.8.1-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 62/163] bzip2-libs-0:1.0.8-20.fc42.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 63/163] libacl-0:2.3.2-3.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 64/163] libcap-0:2.76-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 65/163] libeconf-0:0.7.6-1.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 66/163] libsemanage-0:3.8-1.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 67/163] setup-0:2.15.0-24.fc43.noarch 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 68/163] glibc-gconv-extra-0:2.41.9000 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 69/163] ansible-srpm-macros-0:1-17.1. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 70/163] build-reproducibility-srpm-ma 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 71/163] dwz-0:0.15-9.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 72/163] efi-srpm-macros-0:6-3.fc43.no 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 73/163] filesystem-srpm-macros-0:3.18 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 74/163] fonts-srpm-macros-1:2.0.5-21. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 75/163] forge-srpm-macros-0:0.4.0-2.f 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 76/163] fpc-srpm-macros-0:1.3-14.fc42 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 77/163] ghc-srpm-macros-0:1.9.2-2.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 78/163] gnat-srpm-macros-0:6-7.fc42.n 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 79/163] go-srpm-macros-0:3.6.0-7.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 80/163] kernel-srpm-macros-0:1.0-25.f 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 81/163] lua-srpm-macros-0:1-15.fc42.n 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 82/163] ocaml-srpm-macros-0:10-4.fc42 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 83/163] openblas-srpm-macros-0:2-19.f 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 84/163] package-notes-srpm-macros-0:0 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 85/163] perl-srpm-macros-0:1-57.fc42. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 86/163] pyproject-srpm-macros-0:1.18. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 87/163] python-srpm-macros-0:3.14-5.f 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 88/163] qt5-srpm-macros-0:5.15.16-1.f 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 89/163] qt6-srpm-macros-0:6.9.0-2.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 90/163] rust-srpm-macros-0:26.3-4.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 91/163] tree-sitter-srpm-macros-0:0.2 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 92/163] zig-srpm-macros-0:1-4.fc42.no 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 93/163] zip-0:3.0-43.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 94/163] pkgconf-0:2.3.0-2.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 95/163] pkgconf-m4-0:2.3.0-2.fc42.noa 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 96/163] libpkgconf-0:2.3.0-2.fc42.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 97/163] pcre2-syntax-0:10.45-1.fc43.n 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 98/163] ed-0:1.21-2.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 99/163] libattr-0:2.5.2-5.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [100/163] ncurses-base-0:6.5-5.20250125 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [101/163] libxml2-0:2.12.10-1.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [102/163] libzstd-0:1.5.7-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [103/163] openssl-libs-1:3.5.0-3.fc43.x 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [104/163] glibc-common-0:2.41.9000-12.f 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [105/163] gmp-1:6.3.0-3.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [106/163] mpfr-0:4.2.2-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [107/163] fedora-repos-0:43-0.2.noarch 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [108/163] elfutils-debuginfod-client-0: 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [109/163] elfutils-libs-0:0.193-2.fc43. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [110/163] coreutils-common-0:9.7-1.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [111/163] add-determinism-0:0.6.0-1.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [112/163] alternatives-0:1.33-1.fc43.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [113/163] jansson-0:2.14-2.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [114/163] lua-libs-0:5.4.7-3.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [115/163] rpm-sequoia-0:1.8.0-1.fc43.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [116/163] libgomp-0:15.1.1-1.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [117/163] rpm-sign-libs-0:5.99.90-5.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [118/163] ca-certificates-0:2024.2.69_v 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [119/163] crypto-policies-0:20250402-2. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [120/163] fedora-gpg-keys-0:43-0.2.noar 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [121/163] fedora-repos-rawhide-0:43-0.2 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [122/163] elfutils-default-yama-scope-0 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [123/163] json-c-0:0.18-2.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [124/163] libffi-0:3.4.8-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [125/163] p11-kit-0:0.25.5-5.fc42.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [126/163] p11-kit-trust-0:0.25.5-5.fc42 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [127/163] gnupg2-0:2.4.7-3.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [128/163] ima-evm-utils-libs-0:1.6.2-5. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [129/163] libfsverity-0:1.6-2.fc42.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [130/163] gpgverify-0:2.1-3.fc43.noarch 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [131/163] libtasn1-0:4.20.0-1.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [132/163] tpm2-tss-0:4.1.3-7.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [133/163] gnutls-0:3.8.9-5.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [134/163] libassuan-0:2.5.7-3.fc42.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [135/163] libgcrypt-0:1.11.1-1.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [136/163] libgpg-error-0:1.55-1.fc43.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [137/163] libksba-0:1.6.7-3.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [138/163] npth-0:1.8-2.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [139/163] openldap-0:2.6.9-5.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [140/163] libusb1-0:1.0.28-2.fc43.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [141/163] cyrus-sasl-lib-0:2.1.28-30.fc 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [142/163] libevent-0:2.1.12-15.fc42.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [143/163] libtool-ltdl-0:2.5.4-4.fc42.x 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [144/163] libidn2-0:2.3.8-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [145/163] libunistring-0:1.1-9.fc42.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [146/163] nettle-0:3.10.1-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [147/163] gdbm-libs-1:1.23-9.fc42.x86_6 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [148/163] gdb-minimal-0:16.3-1.fc43.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [149/163] xxhash-libs-0:0.8.3-2.fc42.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [150/163] fedora-release-0:43-0.15.noar 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [151/163] fedora-release-identity-basic 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [152/163] libcurl-0:8.14.0~rc1-1.fc43.x 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [153/163] systemd-standalone-sysusers-0 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [154/163] krb5-libs-0:1.21.3-5.fc42.x86 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [155/163] libbrotli-0:1.1.0-6.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [156/163] libnghttp2-0:1.65.0-1.fc43.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [157/163] libpsl-0:0.21.5-5.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [158/163] libssh-0:0.11.1-4.fc42.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [159/163] keyutils-libs-0:1.6.3-5.fc42. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [160/163] libcom_err-0:1.47.2-3.fc42.x8 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [161/163] libverto-0:0.3.2-10.fc42.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [162/163] libssh-config-0:0.11.1-4.fc42 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [163/163] publicsuffix-list-dafsa-0:202 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded -------------------------------------------------------------------------------- [163/163] Total 100% | 0.0 B/s | 0.0 B | 00m00s Running transaction [ 1/165] Verify package files 100% | 905.0 B/s | 163.0 B | 00m00s >>> Running pre-transaction scriptlet: filesystem-0:3.18-44.fc43.x86_64 >>> Finished pre-transaction scriptlet: filesystem-0:3.18-44.fc43.x86_64 >>> [RPM] /var/lib/mock/fedora-rawhide-x86_64-1747220931.871542/root/var/cache/d [ 2/165] Prepare transaction 100% | 4.4 KiB/s | 163.0 B | 00m00s [ 3/165] Installing libgcc-0:15.1.1-1. 100% | 262.0 MiB/s | 268.3 KiB | 00m00s [ 4/165] Installing publicsuffix-list- 100% | 0.0 B/s | 69.2 KiB | 00m00s [ 5/165] Installing libssh-config-0:0. 100% | 0.0 B/s | 816.0 B | 00m00s [ 6/165] Installing fedora-release-ide 100% | 0.0 B/s | 920.0 B | 00m00s [ 7/165] Installing fedora-gpg-keys-0: 100% | 57.3 MiB/s | 175.9 KiB | 00m00s [ 8/165] Installing fedora-repos-rawhi 100% | 0.0 B/s | 2.4 KiB | 00m00s [ 9/165] Installing fedora-repos-0:43- 100% | 0.0 B/s | 5.7 KiB | 00m00s [ 10/165] Installing fedora-release-com 100% | 24.1 MiB/s | 24.7 KiB | 00m00s [ 11/165] Installing fedora-release-0:4 100% | 0.0 B/s | 124.0 B | 00m00s [ 12/165] Installing setup-0:2.15.0-24. 100% | 64.8 MiB/s | 730.4 KiB | 00m00s >>> [RPM] /etc/hosts created as /etc/hosts.rpmnew [ 13/165] Installing filesystem-0:3.18- 100% | 2.9 MiB/s | 212.5 KiB | 00m00s [ 14/165] Installing coreutils-common-0 100% | 418.2 MiB/s | 11.3 MiB | 00m00s [ 15/165] Installing ncurses-base-0:6.5 100% | 86.0 MiB/s | 352.2 KiB | 00m00s [ 16/165] Installing glibc-minimal-lang 100% | 0.0 B/s | 124.0 B | 00m00s [ 17/165] Installing ncurses-libs-0:6.5 100% | 232.6 MiB/s | 952.8 KiB | 00m00s [ 18/165] Installing glibc-0:2.41.9000- 100% | 238.2 MiB/s | 6.7 MiB | 00m00s [ 19/165] Installing bash-0:5.2.37-3.fc 100% | 314.6 MiB/s | 8.2 MiB | 00m00s [ 20/165] Installing glibc-common-0:2.4 100% | 72.9 MiB/s | 1.0 MiB | 00m00s [ 21/165] Installing glibc-gconv-extra- 100% | 281.2 MiB/s | 7.3 MiB | 00m00s [ 22/165] Installing zlib-ng-compat-0:2 100% | 135.2 MiB/s | 138.4 KiB | 00m00s [ 23/165] Installing libstdc++-0:15.1.1 100% | 405.2 MiB/s | 2.8 MiB | 00m00s [ 24/165] Installing bzip2-libs-0:1.0.8 100% | 0.0 B/s | 85.7 KiB | 00m00s [ 25/165] Installing xz-libs-1:5.8.1-1. 100% | 213.8 MiB/s | 218.9 KiB | 00m00s [ 26/165] Installing libuuid-0:2.41-2.f 100% | 0.0 B/s | 38.3 KiB | 00m00s [ 27/165] Installing gmp-1:6.3.0-3.fc43 100% | 401.1 MiB/s | 821.5 KiB | 00m00s [ 28/165] Installing readline-0:8.2-13. 100% | 475.7 MiB/s | 487.1 KiB | 00m00s [ 29/165] Installing popt-0:1.19-8.fc42 100% | 68.1 MiB/s | 139.4 KiB | 00m00s [ 30/165] Installing libblkid-0:2.41-2. 100% | 257.4 MiB/s | 263.5 KiB | 00m00s [ 31/165] Installing libxcrypt-0:4.4.38 100% | 280.4 MiB/s | 287.2 KiB | 00m00s [ 32/165] Installing libzstd-0:1.5.7-1. 100% | 395.1 MiB/s | 809.1 KiB | 00m00s [ 33/165] Installing elfutils-libelf-0: 100% | 388.8 MiB/s | 1.2 MiB | 00m00s [ 34/165] Installing libgpg-error-0:1.5 100% | 42.8 MiB/s | 921.1 KiB | 00m00s [ 35/165] Installing crypto-policies-0: 100% | 40.7 MiB/s | 166.6 KiB | 00m00s [ 36/165] Installing sqlite-libs-0:3.49 100% | 377.1 MiB/s | 1.5 MiB | 00m00s [ 37/165] Installing libattr-0:2.5.2-5. 100% | 0.0 B/s | 28.1 KiB | 00m00s [ 38/165] Installing libacl-0:2.3.2-3.f 100% | 0.0 B/s | 39.2 KiB | 00m00s [ 39/165] Installing libtasn1-0:4.20.0- 100% | 173.9 MiB/s | 178.1 KiB | 00m00s [ 40/165] Installing libunistring-0:1.1 100% | 431.7 MiB/s | 1.7 MiB | 00m00s [ 41/165] Installing libidn2-0:2.3.8-1. 100% | 181.9 MiB/s | 558.7 KiB | 00m00s [ 42/165] Installing dwz-0:0.15-9.fc42. 100% | 26.0 MiB/s | 292.4 KiB | 00m00s [ 43/165] Installing mpfr-0:4.2.2-1.fc4 100% | 405.5 MiB/s | 830.4 KiB | 00m00s [ 44/165] Installing gawk-0:5.3.2-1.fc4 100% | 121.1 MiB/s | 1.8 MiB | 00m00s [ 45/165] Installing unzip-0:6.0-66.fc4 100% | 35.0 MiB/s | 393.8 KiB | 00m00s [ 46/165] Installing file-libs-0:5.46-1 100% | 741.1 MiB/s | 11.9 MiB | 00m00s [ 47/165] Installing file-0:5.46-1.fc43 100% | 9.9 MiB/s | 101.7 KiB | 00m00s [ 48/165] Installing libsmartcols-0:2.4 100% | 177.3 MiB/s | 181.6 KiB | 00m00s [ 49/165] Installing libcap-ng-0:0.8.5- 100% | 0.0 B/s | 70.8 KiB | 00m00s [ 50/165] Installing audit-libs-0:4.0.3 100% | 341.1 MiB/s | 349.3 KiB | 00m00s [ 51/165] Installing libsepol-0:3.8-1.f 100% | 403.8 MiB/s | 827.0 KiB | 00m00s [ 52/165] Installing lz4-libs-0:1.10.0- 100% | 154.7 MiB/s | 158.5 KiB | 00m00s [ 53/165] Installing libeconf-0:0.7.6-1 100% | 0.0 B/s | 66.2 KiB | 00m00s [ 54/165] Installing pam-libs-0:1.7.0-4 100% | 126.1 MiB/s | 129.1 KiB | 00m00s [ 55/165] Installing libcap-0:2.76-1.fc 100% | 19.0 MiB/s | 214.3 KiB | 00m00s [ 56/165] Installing systemd-libs-0:257 100% | 372.0 MiB/s | 2.2 MiB | 00m00s [ 57/165] Installing alternatives-0:1.3 100% | 6.2 MiB/s | 63.8 KiB | 00m00s [ 58/165] Installing lua-libs-0:5.4.7-3 100% | 271.5 MiB/s | 278.1 KiB | 00m00s [ 59/165] Installing json-c-0:0.18-2.fc 100% | 0.0 B/s | 88.0 KiB | 00m00s [ 60/165] Installing libffi-0:3.4.8-1.f 100% | 82.4 MiB/s | 84.3 KiB | 00m00s [ 61/165] Installing p11-kit-0:0.25.5-5 100% | 128.5 MiB/s | 2.2 MiB | 00m00s [ 62/165] Installing p11-kit-trust-0:0. 100% | 20.4 MiB/s | 397.2 KiB | 00m00s [ 63/165] Installing libusb1-0:1.0.28-2 100% | 168.7 MiB/s | 172.7 KiB | 00m00s [ 64/165] Installing zstd-0:1.5.7-1.fc4 100% | 122.1 MiB/s | 1.7 MiB | 00m00s [ 65/165] Installing zip-0:3.0-43.fc42. 100% | 57.2 MiB/s | 702.4 KiB | 00m00s [ 66/165] Installing libpsl-0:0.21.5-5. 100% | 0.0 B/s | 77.5 KiB | 00m00s [ 67/165] Installing liblastlog2-0:2.41 100% | 0.0 B/s | 35.9 KiB | 00m00s [ 68/165] Installing libassuan-0:2.5.7- 100% | 165.6 MiB/s | 169.6 KiB | 00m00s [ 69/165] Installing libgcrypt-0:1.11.1 100% | 393.8 MiB/s | 1.6 MiB | 00m00s [ 70/165] Installing libksba-0:1.6.7-3. 100% | 395.6 MiB/s | 405.1 KiB | 00m00s [ 71/165] Installing libfdisk-0:2.41-2. 100% | 368.6 MiB/s | 377.5 KiB | 00m00s [ 72/165] Installing nettle-0:3.10.1-1. 100% | 387.5 MiB/s | 793.6 KiB | 00m00s [ 73/165] Installing gnutls-0:3.8.9-5.f 100% | 397.1 MiB/s | 3.6 MiB | 00m00s [ 74/165] Installing libxml2-0:2.12.10- 100% | 121.7 MiB/s | 1.7 MiB | 00m00s [ 75/165] Installing bzip2-0:1.0.8-20.f 100% | 10.1 MiB/s | 103.8 KiB | 00m00s [ 76/165] Installing add-determinism-0: 100% | 164.4 MiB/s | 2.5 MiB | 00m00s [ 77/165] Installing build-reproducibil 100% | 0.0 B/s | 1.0 KiB | 00m00s [ 78/165] Installing filesystem-srpm-ma 100% | 0.0 B/s | 38.9 KiB | 00m00s [ 79/165] Installing ed-0:1.21-2.fc42.x 100% | 14.5 MiB/s | 148.8 KiB | 00m00s [ 80/165] Installing patch-0:2.8-1.fc43 100% | 22.3 MiB/s | 228.3 KiB | 00m00s [ 81/165] Installing elfutils-default-y 100% | 291.9 KiB/s | 2.0 KiB | 00m00s [ 82/165] Installing elfutils-libs-0:0. 100% | 334.6 MiB/s | 685.2 KiB | 00m00s [ 83/165] Installing cpio-0:2.15-2.fc41 100% | 78.6 MiB/s | 1.1 MiB | 00m00s [ 84/165] Installing diffutils-0:3.12-2 100% | 111.5 MiB/s | 1.6 MiB | 00m00s [ 85/165] Installing libpkgconf-0:2.3.0 100% | 0.0 B/s | 79.2 KiB | 00m00s [ 86/165] Installing pkgconf-0:2.3.0-2. 100% | 8.9 MiB/s | 91.0 KiB | 00m00s [ 87/165] Installing jansson-0:2.14-2.f 100% | 92.2 MiB/s | 94.4 KiB | 00m00s [ 88/165] Installing libgomp-0:15.1.1-1 100% | 527.3 MiB/s | 539.9 KiB | 00m00s [ 89/165] Installing npth-0:1.8-2.fc42. 100% | 0.0 B/s | 50.7 KiB | 00m00s [ 90/165] Installing libtool-ltdl-0:2.5 100% | 0.0 B/s | 71.2 KiB | 00m00s [ 91/165] Installing gdbm-libs-1:1.23-9 100% | 128.5 MiB/s | 131.6 KiB | 00m00s [ 92/165] Installing cyrus-sasl-lib-0:2 100% | 153.6 MiB/s | 2.3 MiB | 00m00s [ 93/165] Installing xxhash-libs-0:0.8. 100% | 89.4 MiB/s | 91.6 KiB | 00m00s [ 94/165] Installing libbrotli-0:1.1.0- 100% | 408.0 MiB/s | 835.6 KiB | 00m00s [ 95/165] Installing libnghttp2-0:1.65. 100% | 159.5 MiB/s | 163.3 KiB | 00m00s [ 96/165] Installing keyutils-libs-0:1. 100% | 0.0 B/s | 59.7 KiB | 00m00s [ 97/165] Installing libcom_err-0:1.47. 100% | 0.0 B/s | 68.2 KiB | 00m00s [ 98/165] Installing libverto-0:0.3.2-1 100% | 0.0 B/s | 27.2 KiB | 00m00s [ 99/165] Installing pcre2-syntax-0:10. 100% | 269.9 MiB/s | 276.4 KiB | 00m00s [100/165] Installing pcre2-0:10.45-1.fc 100% | 341.4 MiB/s | 699.1 KiB | 00m00s [101/165] Installing libselinux-0:3.8-1 100% | 189.8 MiB/s | 194.3 KiB | 00m00s [102/165] Installing grep-0:3.12-1.fc43 100% | 77.1 MiB/s | 1.0 MiB | 00m00s [103/165] Installing sed-0:4.9-4.fc42.x 100% | 65.0 MiB/s | 865.5 KiB | 00m00s [104/165] Installing findutils-1:4.10.0 100% | 124.9 MiB/s | 1.9 MiB | 00m00s [105/165] Installing xz-1:5.8.1-1.fc43. 100% | 88.8 MiB/s | 1.3 MiB | 00m00s [106/165] Installing libmount-0:2.41-2. 100% | 364.9 MiB/s | 373.7 KiB | 00m00s [107/165] Installing util-linux-core-0: 100% | 92.0 MiB/s | 1.5 MiB | 00m00s [108/165] Installing openssl-libs-1:3.5 100% | 423.3 MiB/s | 8.9 MiB | 00m00s [109/165] Installing coreutils-0:9.7-1. 100% | 175.6 MiB/s | 5.4 MiB | 00m00s [110/165] Installing ca-certificates-0: 100% | 2.2 MiB/s | 2.4 MiB | 00m01s [111/165] Installing libarchive-0:3.7.7 100% | 303.6 MiB/s | 932.6 KiB | 00m00s [112/165] Installing krb5-libs-0:1.21.3 100% | 287.5 MiB/s | 2.3 MiB | 00m00s [113/165] Installing tpm2-tss-0:4.1.3-7 100% | 313.6 MiB/s | 1.6 MiB | 00m00s [114/165] Installing ima-evm-utils-libs 100% | 0.0 B/s | 62.0 KiB | 00m00s [115/165] Installing libssh-0:0.11.1-4. 100% | 277.1 MiB/s | 567.5 KiB | 00m00s [116/165] Installing gzip-0:1.13-3.fc42 100% | 29.9 MiB/s | 398.4 KiB | 00m00s [117/165] Installing rpm-sequoia-0:1.8. 100% | 417.3 MiB/s | 2.5 MiB | 00m00s [118/165] Installing libfsverity-0:1.6- 100% | 0.0 B/s | 33.5 KiB | 00m00s [119/165] Installing libevent-0:2.1.12- 100% | 295.2 MiB/s | 906.9 KiB | 00m00s [120/165] Installing openldap-0:2.6.9-5 100% | 214.5 MiB/s | 658.9 KiB | 00m00s [121/165] Installing gnupg2-0:2.4.7-3.f 100% | 272.0 MiB/s | 9.8 MiB | 00m00s [122/165] Installing libcurl-0:8.14.0~r 100% | 290.4 MiB/s | 892.1 KiB | 00m00s [123/165] Installing elfutils-debuginfo 100% | 7.7 MiB/s | 86.2 KiB | 00m00s [124/165] Installing binutils-0:2.44-3. 100% | 350.0 MiB/s | 25.9 MiB | 00m00s [125/165] Installing elfutils-0:0.193-2 100% | 162.4 MiB/s | 2.9 MiB | 00m00s [126/165] Installing gdb-minimal-0:16.3 100% | 331.2 MiB/s | 13.2 MiB | 00m00s [127/165] Installing debugedit-0:5.1-6. 100% | 17.3 MiB/s | 195.4 KiB | 00m00s [128/165] Installing curl-0:8.14.0~rc1- 100% | 42.3 MiB/s | 476.0 KiB | 00m00s [129/165] Installing gpgverify-0:2.1-3. 100% | 0.0 B/s | 9.4 KiB | 00m00s [130/165] Installing tar-2:1.35-5.fc42. 100% | 174.2 MiB/s | 3.0 MiB | 00m00s [131/165] Installing libsemanage-0:3.8- 100% | 299.0 MiB/s | 306.2 KiB | 00m00s [132/165] Installing systemd-standalone 100% | 24.7 MiB/s | 277.8 KiB | 00m00s [133/165] Installing rpm-libs-0:5.99.90 100% | 75.8 MiB/s | 931.3 KiB | 00m00s [134/165] Installing rpm-0:5.99.90-5.fc 100% | 86.5 MiB/s | 2.5 MiB | 00m00s [135/165] Installing efi-srpm-macros-0: 100% | 0.0 B/s | 41.1 KiB | 00m00s [136/165] Installing lua-srpm-macros-0: 100% | 0.0 B/s | 1.9 KiB | 00m00s [137/165] Installing tree-sitter-srpm-m 100% | 0.0 B/s | 8.6 KiB | 00m00s [138/165] Installing zig-srpm-macros-0: 100% | 0.0 B/s | 1.7 KiB | 00m00s [139/165] Installing rpm-sign-libs-0:5. 100% | 39.6 MiB/s | 40.5 KiB | 00m00s [140/165] Installing rpm-build-libs-0:5 100% | 259.0 MiB/s | 265.2 KiB | 00m00s [141/165] Installing pkgconf-m4-0:2.3.0 100% | 0.0 B/s | 14.8 KiB | 00m00s [142/165] Installing pkgconf-pkg-config 100% | 177.3 KiB/s | 1.8 KiB | 00m00s [143/165] Installing rust-srpm-macros-0 100% | 0.0 B/s | 5.6 KiB | 00m00s [144/165] Installing qt6-srpm-macros-0: 100% | 0.0 B/s | 740.0 B | 00m00s [145/165] Installing qt5-srpm-macros-0: 100% | 0.0 B/s | 776.0 B | 00m00s [146/165] Installing perl-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [147/165] Installing package-notes-srpm 100% | 0.0 B/s | 2.0 KiB | 00m00s [148/165] Installing openblas-srpm-macr 100% | 0.0 B/s | 392.0 B | 00m00s [149/165] Installing ocaml-srpm-macros- 100% | 0.0 B/s | 2.2 KiB | 00m00s [150/165] Installing kernel-srpm-macros 100% | 0.0 B/s | 2.3 KiB | 00m00s [151/165] Installing gnat-srpm-macros-0 100% | 0.0 B/s | 1.3 KiB | 00m00s [152/165] Installing ghc-srpm-macros-0: 100% | 0.0 B/s | 1.0 KiB | 00m00s [153/165] Installing fpc-srpm-macros-0: 100% | 0.0 B/s | 420.0 B | 00m00s [154/165] Installing ansible-srpm-macro 100% | 0.0 B/s | 36.2 KiB | 00m00s [155/165] Installing fonts-srpm-macros- 100% | 0.0 B/s | 57.0 KiB | 00m00s [156/165] Installing forge-srpm-macros- 100% | 0.0 B/s | 40.3 KiB | 00m00s [157/165] Installing go-srpm-macros-0:3 100% | 0.0 B/s | 62.0 KiB | 00m00s [158/165] Installing python-srpm-macros 100% | 0.0 B/s | 53.0 KiB | 00m00s [159/165] Installing redhat-rpm-config- 100% | 91.8 MiB/s | 188.0 KiB | 00m00s [160/165] Installing rpm-build-0:5.99.9 100% | 23.6 MiB/s | 290.3 KiB | 00m00s [161/165] Installing pyproject-srpm-mac 100% | 2.4 MiB/s | 2.5 KiB | 00m00s [162/165] Installing shadow-utils-2:4.1 100% | 150.1 MiB/s | 4.1 MiB | 00m00s [163/165] Installing which-0:2.23-1.fc4 100% | 7.6 MiB/s | 85.6 KiB | 00m00s [164/165] Installing util-linux-0:2.41- 100% | 107.9 MiB/s | 3.6 MiB | 00m00s [165/165] Installing info-0:7.2-3.fc42. 100% | 241.3 KiB/s | 358.3 KiB | 00m01s Warning: skipped OpenPGP checks for 163 packages from repositories: copr_base, http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Finish: installing minimal buildroot with dnf5 Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: add-determinism-0.6.0-1.fc43.x86_64 alternatives-1.33-1.fc43.x86_64 ansible-srpm-macros-1-17.1.fc42.noarch audit-libs-4.0.3-2.fc43.x86_64 bash-5.2.37-3.fc43.x86_64 binutils-2.44-3.fc43.x86_64 build-reproducibility-srpm-macros-0.6.0-1.fc43.noarch bzip2-1.0.8-20.fc42.x86_64 bzip2-libs-1.0.8-20.fc42.x86_64 ca-certificates-2024.2.69_v8.0.401-5.fc42.noarch coreutils-9.7-1.fc43.x86_64 coreutils-common-9.7-1.fc43.x86_64 cpio-2.15-2.fc41.x86_64 crypto-policies-20250402-2.git86c0178.fc43.noarch curl-8.14.0~rc1-1.fc43.x86_64 cyrus-sasl-lib-2.1.28-30.fc42.x86_64 debugedit-5.1-6.fc43.x86_64 diffutils-3.12-2.fc43.x86_64 dwz-0.15-9.fc42.x86_64 ed-1.21-2.fc42.x86_64 efi-srpm-macros-6-3.fc43.noarch elfutils-0.193-2.fc43.x86_64 elfutils-debuginfod-client-0.193-2.fc43.x86_64 elfutils-default-yama-scope-0.193-2.fc43.noarch elfutils-libelf-0.193-2.fc43.x86_64 elfutils-libs-0.193-2.fc43.x86_64 fedora-gpg-keys-43-0.2.noarch fedora-release-43-0.15.noarch fedora-release-common-43-0.15.noarch fedora-release-identity-basic-43-0.15.noarch fedora-repos-43-0.2.noarch fedora-repos-rawhide-43-0.2.noarch file-5.46-1.fc43.x86_64 file-libs-5.46-1.fc43.x86_64 filesystem-3.18-44.fc43.x86_64 filesystem-srpm-macros-3.18-44.fc43.noarch findutils-4.10.0-5.fc42.x86_64 fonts-srpm-macros-2.0.5-21.fc42.noarch forge-srpm-macros-0.4.0-2.fc42.noarch fpc-srpm-macros-1.3-14.fc42.noarch gawk-5.3.2-1.fc43.x86_64 gdb-minimal-16.3-1.fc43.x86_64 gdbm-libs-1.23-9.fc42.x86_64 ghc-srpm-macros-1.9.2-2.fc42.noarch glibc-2.41.9000-12.fc43.x86_64 glibc-common-2.41.9000-12.fc43.x86_64 glibc-gconv-extra-2.41.9000-12.fc43.x86_64 glibc-minimal-langpack-2.41.9000-12.fc43.x86_64 gmp-6.3.0-3.fc43.x86_64 gnat-srpm-macros-6-7.fc42.noarch gnupg2-2.4.7-3.fc43.x86_64 gnutls-3.8.9-5.fc43.x86_64 go-srpm-macros-3.6.0-7.fc43.noarch gpgverify-2.1-3.fc43.noarch grep-3.12-1.fc43.x86_64 gzip-1.13-3.fc42.x86_64 ima-evm-utils-libs-1.6.2-5.fc43.x86_64 info-7.2-3.fc42.x86_64 jansson-2.14-2.fc42.x86_64 json-c-0.18-2.fc42.x86_64 kernel-srpm-macros-1.0-25.fc42.noarch keyutils-libs-1.6.3-5.fc42.x86_64 krb5-libs-1.21.3-5.fc42.x86_64 libacl-2.3.2-3.fc42.x86_64 libarchive-3.7.7-4.fc43.x86_64 libassuan-2.5.7-3.fc42.x86_64 libattr-2.5.2-5.fc42.x86_64 libblkid-2.41-2.fc43.x86_64 libbrotli-1.1.0-6.fc43.x86_64 libcap-2.76-1.fc43.x86_64 libcap-ng-0.8.5-4.fc43.x86_64 libcom_err-1.47.2-3.fc42.x86_64 libcurl-8.14.0~rc1-1.fc43.x86_64 libeconf-0.7.6-1.fc43.x86_64 libevent-2.1.12-15.fc42.x86_64 libfdisk-2.41-2.fc43.x86_64 libffi-3.4.8-1.fc43.x86_64 libfsverity-1.6-2.fc42.x86_64 libgcc-15.1.1-1.fc43.x86_64 libgcrypt-1.11.1-1.fc43.x86_64 libgomp-15.1.1-1.fc43.x86_64 libgpg-error-1.55-1.fc43.x86_64 libidn2-2.3.8-1.fc43.x86_64 libksba-1.6.7-3.fc42.x86_64 liblastlog2-2.41-2.fc43.x86_64 libmount-2.41-2.fc43.x86_64 libnghttp2-1.65.0-1.fc43.x86_64 libpkgconf-2.3.0-2.fc42.x86_64 libpsl-0.21.5-5.fc42.x86_64 libselinux-3.8-1.fc43.x86_64 libsemanage-3.8-1.fc43.x86_64 libsepol-3.8-1.fc42.x86_64 libsmartcols-2.41-2.fc43.x86_64 libssh-0.11.1-4.fc42.x86_64 libssh-config-0.11.1-4.fc42.noarch libstdc++-15.1.1-1.fc43.x86_64 libtasn1-4.20.0-1.fc43.x86_64 libtool-ltdl-2.5.4-4.fc42.x86_64 libunistring-1.1-9.fc42.x86_64 libusb1-1.0.28-2.fc43.x86_64 libuuid-2.41-2.fc43.x86_64 libverto-0.3.2-10.fc42.x86_64 libxcrypt-4.4.38-7.fc43.x86_64 libxml2-2.12.10-1.fc43.x86_64 libzstd-1.5.7-1.fc43.x86_64 lua-libs-5.4.7-3.fc43.x86_64 lua-srpm-macros-1-15.fc42.noarch lz4-libs-1.10.0-2.fc42.x86_64 mpfr-4.2.2-1.fc43.x86_64 ncurses-base-6.5-5.20250125.fc42.noarch ncurses-libs-6.5-5.20250125.fc42.x86_64 nettle-3.10.1-1.fc43.x86_64 npth-1.8-2.fc42.x86_64 ocaml-srpm-macros-10-4.fc42.noarch openblas-srpm-macros-2-19.fc42.noarch openldap-2.6.9-5.fc43.x86_64 openssl-libs-3.5.0-3.fc43.x86_64 p11-kit-0.25.5-5.fc42.x86_64 p11-kit-trust-0.25.5-5.fc42.x86_64 package-notes-srpm-macros-0.5-13.fc42.noarch pam-libs-1.7.0-4.fc42.x86_64 patch-2.8-1.fc43.x86_64 pcre2-10.45-1.fc43.x86_64 pcre2-syntax-10.45-1.fc43.noarch perl-srpm-macros-1-57.fc42.noarch pkgconf-2.3.0-2.fc42.x86_64 pkgconf-m4-2.3.0-2.fc42.noarch pkgconf-pkg-config-2.3.0-2.fc42.x86_64 popt-1.19-8.fc42.x86_64 publicsuffix-list-dafsa-20250116-1.fc42.noarch pyproject-srpm-macros-1.18.1-1.fc43.noarch python-srpm-macros-3.14-5.fc43.noarch qt5-srpm-macros-5.15.16-1.fc43.noarch qt6-srpm-macros-6.9.0-2.fc43.noarch readline-8.2-13.fc43.x86_64 redhat-rpm-config-343-5.fc43.noarch rpm-5.99.90-5.fc43.x86_64 rpm-build-5.99.90-5.fc43.x86_64 rpm-build-libs-5.99.90-5.fc43.x86_64 rpm-libs-5.99.90-5.fc43.x86_64 rpm-sequoia-1.8.0-1.fc43.x86_64 rpm-sign-libs-5.99.90-5.fc43.x86_64 rust-srpm-macros-26.3-4.fc42.noarch sed-4.9-4.fc42.x86_64 setup-2.15.0-24.fc43.noarch shadow-utils-4.17.4-1.fc43.x86_64 sqlite-libs-3.49.1-1.fc43.x86_64 systemd-libs-257.5-5.fc43.x86_64 systemd-standalone-sysusers-257.5-5.fc43.x86_64 tar-1.35-5.fc42.x86_64 tpm2-tss-4.1.3-7.fc43.x86_64 tree-sitter-srpm-macros-0.2.4-1.fc43.noarch unzip-6.0-66.fc42.x86_64 util-linux-2.41-2.fc43.x86_64 util-linux-core-2.41-2.fc43.x86_64 which-2.23-1.fc42.x86_64 xxhash-libs-0.8.3-2.fc42.x86_64 xz-5.8.1-1.fc43.x86_64 xz-libs-5.8.1-1.fc43.x86_64 zig-srpm-macros-1-4.fc42.noarch zip-3.0-43.fc42.x86_64 zlib-ng-compat-2.2.4-2.fc43.x86_64 zstd-1.5.7-1.fc43.x86_64 Start: buildsrpm Start: rpmbuild -bs Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Wrote: /builddir/build/SRPMS/python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Finish: rpmbuild -bs INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-rawhide-x86_64-1747220931.871542/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names Finish: buildsrpm INFO: Done(/var/lib/copr-rpmbuild/workspace/workdir-1_gmna7g/python-flask-sqlalchemy/python-flask-sqlalchemy.spec) Config(child) 0 minutes 8 seconds INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results INFO: Cleaning up build root ('cleanup_on_success=True') Start: clean chroot INFO: unmounting tmpfs. Finish: clean chroot INFO: Start(/var/lib/copr-rpmbuild/results/python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm) Config(fedora-rawhide-x86_64) Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-1747220931.871542/root. INFO: calling preinit hooks INFO: enabled root cache Start: unpacking root cache Finish: unpacking root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Buildroot is handled by package management from host and used with --installroot: rpm-4.20.1-1.fc41.x86_64 rpm-sequoia-1.7.0-2.fc41.x86_64 python3-dnf-4.23.0-1.fc41.noarch python3-dnf-plugins-core-4.10.1-1.fc41.noarch dnf5-5.2.13.1-1.fc41.x86_64 dnf5-plugins-5.2.13.1-1.fc41.x86_64 Finish: chroot init Start: build phase for python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Start: build setup for python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Wrote: /builddir/build/SRPMS/python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Updating and loading repositories: fedora 100% | 100.7 KiB/s | 27.2 KiB | 00m00s Copr repository 100% | 19.7 KiB/s | 1.5 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 132.0 KiB/s | 3.8 KiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing: python3-devel x86_64 3.14.0~b1-1.fc43 copr_base 1.9 MiB python3-pytest noarch 8.3.4-3.fc43 copr_base 4.1 MiB Installing dependencies: expat x86_64 2.7.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 294.2 KiB mpdecimal x86_64 4.0.0-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 216.8 KiB pyproject-rpm-macros noarch 1.18.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 114.5 KiB python-pip-wheel noarch 24.3.1-2.fc42 copr_base 1.2 MiB python-rpm-macros noarch 3.14-5.fc43 copr_base 22.1 KiB python3 x86_64 3.14.0~b1-1.fc43 copr_base 28.9 KiB python3-iniconfig noarch 1.1.1-25.fc43 copr_base 21.0 KiB python3-libs x86_64 3.14.0~b1-1.fc43 copr_base 42.5 MiB python3-packaging noarch 25.0-1.fc43 copr_base 607.5 KiB python3-pluggy noarch 1.5.0-2.fc43 copr_base 213.2 KiB python3-rpm-generators noarch 14-12.fc42 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 81.7 KiB python3-rpm-macros noarch 3.14-5.fc43 copr_base 6.4 KiB tzdata noarch 2025b-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB Transaction Summary: Installing: 15 packages Total size of inbound packages is 13 MiB. Need to download 0 B. After this operation, 53 MiB extra will be used (install 53 MiB, remove 0 B). [ 1/15] python3-devel-0:3.14.0~b1-1.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 2/15] python3-pytest-0:8.3.4-3.fc43.n 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 3/15] python3-0:3.14.0~b1-1.fc43.x86_ 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 4/15] python3-libs-0:3.14.0~b1-1.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 5/15] python3-iniconfig-0:1.1.1-25.fc 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 6/15] python3-packaging-0:25.0-1.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 7/15] python3-pluggy-0:1.5.0-2.fc43.n 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 8/15] expat-0:2.7.1-1.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 9/15] mpdecimal-0:4.0.0-2.fc43.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [10/15] python-pip-wheel-0:24.3.1-2.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [11/15] tzdata-0:2025b-1.fc43.noarch 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [12/15] python-rpm-macros-0:3.14-5.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [13/15] python3-rpm-macros-0:3.14-5.fc4 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [14/15] pyproject-rpm-macros-0:1.18.1-1 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [15/15] python3-rpm-generators-0:14-12. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded -------------------------------------------------------------------------------- [15/15] Total 100% | 0.0 B/s | 0.0 B | 00m00s Running transaction [ 1/17] Verify package files 100% | 340.0 B/s | 15.0 B | 00m00s [ 2/17] Prepare transaction 100% | 681.0 B/s | 15.0 B | 00m00s [ 3/17] Installing python-rpm-macros-0: 100% | 0.0 B/s | 22.8 KiB | 00m00s [ 4/17] Installing python3-rpm-macros-0 100% | 0.0 B/s | 6.7 KiB | 00m00s [ 5/17] Installing pyproject-rpm-macros 100% | 56.9 MiB/s | 116.4 KiB | 00m00s [ 6/17] Installing tzdata-0:2025b-1.fc4 100% | 65.2 MiB/s | 1.9 MiB | 00m00s [ 7/17] Installing python-pip-wheel-0:2 100% | 622.1 MiB/s | 1.2 MiB | 00m00s [ 8/17] Installing mpdecimal-0:4.0.0-2. 100% | 213.2 MiB/s | 218.4 KiB | 00m00s [ 9/17] Installing expat-0:2.7.1-1.fc43 100% | 18.1 MiB/s | 296.3 KiB | 00m00s [10/17] Installing python3-libs-0:3.14. 100% | 360.3 MiB/s | 42.9 MiB | 00m00s [11/17] Installing python3-0:3.14.0~b1- 100% | 2.7 MiB/s | 30.7 KiB | 00m00s [12/17] Installing python3-packaging-0: 100% | 201.8 MiB/s | 620.0 KiB | 00m00s [13/17] Installing python3-rpm-generato 100% | 0.0 B/s | 82.9 KiB | 00m00s [14/17] Installing python3-iniconfig-0: 100% | 23.6 MiB/s | 24.2 KiB | 00m00s [15/17] Installing python3-pluggy-0:1.5 100% | 107.3 MiB/s | 219.7 KiB | 00m00s [16/17] Installing python3-pytest-0:8.3 100% | 187.0 MiB/s | 4.1 MiB | 00m00s [17/17] Installing python3-devel-0:3.14 100% | 27.1 MiB/s | 2.0 MiB | 00m00s Warning: skipped OpenPGP checks for 15 packages from repositories: copr_base, http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Finish: build setup for python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Start: rpmbuild python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.MQw1By Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.HIeiDS + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + rm -rf flask_sqlalchemy-3.0.5 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/flask_sqlalchemy-3.0.5.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd flask_sqlalchemy-3.0.5 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.4b5ZMr + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + cd flask_sqlalchemy-3.0.5 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=43 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir --output /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires Handling flit_core<4 from build-system.requires Requirement not satisfied: flit_core<4 Exiting dependency generation pass: build backend + cat /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-flask-sqlalchemy-3.0.5-7.fc43.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 228.5 KiB/s | 27.2 KiB | 00m00s Copr repository 100% | 39.4 KiB/s | 1.5 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 174.0 KiB/s | 3.8 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.1-1.fc43.noarch" is already installed. Package "python3-devel-3.14.0~b1-1.fc43.x86_64" is already installed. Package "python3-pytest-8.3.4-3.fc43.noarch" is already installed. Package "python3-packaging-25.0-1.fc43.noarch" is already installed. Package Arch Version Repository Size Installing: python3-flit-core noarch 3.12.0-1.fc43 copr_base 265.0 KiB python3-pip noarch 24.3.1-2.fc42 copr_base 12.0 MiB Transaction Summary: Installing: 2 packages Total size of inbound packages is 3 MiB. Need to download 86 KiB. After this operation, 12 MiB extra will be used (install 12 MiB, remove 0 B). [1/2] python3-pip-0:24.3.1-2.fc42.noarc 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [2/2] python3-flit-core-0:3.12.0-1.fc43 100% | 10.6 MiB/s | 86.5 KiB | 00m00s -------------------------------------------------------------------------------- [2/2] Total 100% | 7.7 MiB/s | 86.5 KiB | 00m00s Running transaction [1/4] Verify package files 100% | 200.0 B/s | 2.0 B | 00m00s [2/4] Prepare transaction 100% | 142.0 B/s | 2.0 B | 00m00s [3/4] Installing python3-pip-0:24.3.1-2 100% | 200.3 MiB/s | 12.2 MiB | 00m00s [4/4] Installing python3-flit-core-0:3. 100% | 7.4 MiB/s | 271.2 KiB | 00m00s Warning: skipped OpenPGP checks for 2 packages from repository: copr_base Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.dvQwbE + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + cd flask_sqlalchemy-3.0.5 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=43 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir --output /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires Handling flit_core<4 from build-system.requires Requirement satisfied: flit_core<4 (installed: flit_core 3.12.0) Handling flask>=2.2.5 from hook generated metadata: Requires-Dist (Flask-SQLAlchemy) Requirement not satisfied: flask>=2.2.5 Handling sqlalchemy>=1.4.18 from hook generated metadata: Requires-Dist (Flask-SQLAlchemy) Requirement not satisfied: sqlalchemy>=1.4.18 + cat /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires + rm -rfv flask_sqlalchemy-3.0.5.dist-info/ removed 'flask_sqlalchemy-3.0.5.dist-info/WHEEL' removed 'flask_sqlalchemy-3.0.5.dist-info/METADATA' removed directory 'flask_sqlalchemy-3.0.5.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-flask-sqlalchemy-3.0.5-7.fc43.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 849.6 KiB/s | 27.2 KiB | 00m00s Copr repository 100% | 27.0 KiB/s | 1.5 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 212.7 KiB/s | 3.8 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.1-1.fc43.noarch" is already installed. Package "python3-devel-3.14.0~b1-1.fc43.x86_64" is already installed. Package "python3-pytest-8.3.4-3.fc43.noarch" is already installed. Package "python3-flit-core-3.12.0-1.fc43.noarch" is already installed. Package "python3-packaging-25.0-1.fc43.noarch" is already installed. Package "python3-pip-24.3.1-2.fc42.noarch" is already installed. Package Arch Version Repository Size Installing: python3-flask noarch 1:3.1.0-4.fc43 copr_base 928.4 KiB python3-sqlalchemy x86_64 2.0.40-5.fc43 copr_base 23.8 MiB Installing dependencies: python3-blinker noarch 1.9.0-1.fc42 copr_base 81.1 KiB python3-click noarch 8.1.7-7.fc43 copr_base 1.2 MiB python3-itsdangerous noarch 2.2.0-2.fc43 copr_base 109.0 KiB python3-jinja2 noarch 3.1.6-1.fc43 copr_base 3.1 MiB python3-markupsafe x86_64 3.0.2-2.fc43 copr_base 61.5 KiB python3-typing-extensions noarch 4.12.2-3.fc42 copr_base 537.7 KiB python3-werkzeug noarch 3.1.3-2.fc43 copr_base 2.0 MiB Transaction Summary: Installing: 9 packages Total size of inbound packages is 5 MiB. Need to download 4 MiB. After this operation, 32 MiB extra will be used (install 32 MiB, remove 0 B). [1/9] python3-flask-1:3.1.0-4.fc43.noar 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [2/9] python3-blinker-0:1.9.0-1.fc42.no 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [3/9] python3-click-0:8.1.7-7.fc43.noar 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [4/9] python3-itsdangerous-0:2.2.0-2.fc 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [5/9] python3-jinja2-0:3.1.6-1.fc43.noa 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [6/9] python3-werkzeug-0:3.1.3-2.fc43.n 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [7/9] python3-markupsafe-0:3.0.2-2.fc43 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [8/9] python3-typing-extensions-0:4.12. 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [9/9] python3-sqlalchemy-0:2.0.40-5.fc4 100% | 208.4 MiB/s | 3.8 MiB | 00m00s -------------------------------------------------------------------------------- [9/9] Total 100% | 187.5 MiB/s | 3.8 MiB | 00m00s Running transaction [ 1/11] Verify package files 100% | 473.0 B/s | 9.0 B | 00m00s [ 2/11] Prepare transaction 100% | 600.0 B/s | 9.0 B | 00m00s [ 3/11] Installing python3-markupsafe-0 100% | 64.2 MiB/s | 65.8 KiB | 00m00s [ 4/11] Installing python3-jinja2-0:3.1 100% | 386.2 MiB/s | 3.1 MiB | 00m00s [ 5/11] Installing python3-werkzeug-0:3 100% | 284.9 MiB/s | 2.0 MiB | 00m00s [ 6/11] Installing python3-typing-exten 100% | 527.5 MiB/s | 540.1 KiB | 00m00s [ 7/11] Installing python3-itsdangerous 100% | 113.2 MiB/s | 116.0 KiB | 00m00s [ 8/11] Installing python3-click-0:8.1. 100% | 390.1 MiB/s | 1.2 MiB | 00m00s [ 9/11] Installing python3-blinker-0:1. 100% | 82.8 MiB/s | 84.8 KiB | 00m00s [10/11] Installing python3-flask-1:3.1. 100% | 57.7 MiB/s | 945.2 KiB | 00m00s [11/11] Installing python3-sqlalchemy-0 100% | 268.9 MiB/s | 23.9 MiB | 00m00s Warning: skipped OpenPGP checks for 9 packages from repository: copr_base Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.KWJv66 + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + cd flask_sqlalchemy-3.0.5 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=43 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir --output /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires Handling flit_core<4 from build-system.requires Requirement satisfied: flit_core<4 (installed: flit_core 3.12.0) Handling flask>=2.2.5 from hook generated metadata: Requires-Dist (Flask-SQLAlchemy) Requirement satisfied: flask>=2.2.5 (installed: flask 3.1.0) Handling sqlalchemy>=1.4.18 from hook generated metadata: Requires-Dist (Flask-SQLAlchemy) Requirement satisfied: sqlalchemy>=1.4.18 (installed: sqlalchemy 2.0.40) + cat /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires + rm -rfv flask_sqlalchemy-3.0.5.dist-info/ removed 'flask_sqlalchemy-3.0.5.dist-info/WHEEL' removed 'flask_sqlalchemy-3.0.5.dist-info/METADATA' removed directory 'flask_sqlalchemy-3.0.5.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-flask-sqlalchemy-3.0.5-7.fc43.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 261.4 KiB/s | 27.2 KiB | 00m00s Copr repository 100% | 10.3 KiB/s | 1.5 KiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 174.0 KiB/s | 3.8 KiB | 00m00s Repositories loaded. Nothing to do. Package "pyproject-rpm-macros-1.18.1-1.fc43.noarch" is already installed. Package "python3-devel-3.14.0~b1-1.fc43.x86_64" is already installed. Package "python3-pytest-8.3.4-3.fc43.noarch" is already installed. Package "python3-flask-1:3.1.0-4.fc43.noarch" is already installed. Package "python3-flit-core-3.12.0-1.fc43.noarch" is already installed. Package "python3-packaging-25.0-1.fc43.noarch" is already installed. Package "python3-pip-24.3.1-2.fc42.noarch" is already installed. Package "python3-sqlalchemy-2.0.40-5.fc43.x86_64" is already installed. Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1737158400 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.amCriF + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + cd flask_sqlalchemy-3.0.5 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=43 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir --output /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires Handling flit_core<4 from build-system.requires Requirement satisfied: flit_core<4 (installed: flit_core 3.12.0) Handling flask>=2.2.5 from hook generated metadata: Requires-Dist (Flask-SQLAlchemy) Requirement satisfied: flask>=2.2.5 (installed: flask 3.1.0) Handling sqlalchemy>=1.4.18 from hook generated metadata: Requires-Dist (Flask-SQLAlchemy) Requirement satisfied: sqlalchemy>=1.4.18 (installed: sqlalchemy 2.0.40) + cat /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-buildrequires + rm -rfv flask_sqlalchemy-3.0.5.dist-info/ removed 'flask_sqlalchemy-3.0.5.dist-info/WHEEL' removed 'flask_sqlalchemy-3.0.5.dist-info/METADATA' removed directory 'flask_sqlalchemy-3.0.5.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.FbQ9MO + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd flask_sqlalchemy-3.0.5 + mkdir -p /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir Processing /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: Flask-SQLAlchemy Building wheel for Flask-SQLAlchemy (pyproject.toml): started Running command Building wheel for Flask-SQLAlchemy (pyproject.toml) Building wheel for Flask-SQLAlchemy (pyproject.toml): finished with status 'done' Created wheel for Flask-SQLAlchemy: filename=flask_sqlalchemy-3.0.5-py3-none-any.whl size=24820 sha256=1359186e0d73cf3cefb226fcb54f23900cf582d4d111846a839fb63eab013c7e Stored in directory: /builddir/.cache/pip/wheels/3e/76/6f/c6c3842223d3378399037d409e07ac5f33a139b5bfe03917d7 Successfully built Flask-SQLAlchemy + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.Gz4bQ5 + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + '[' /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT '!=' / ']' + rm -rf /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT ++ dirname /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT + mkdir -p /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + mkdir /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd flask_sqlalchemy-3.0.5 ++ ls /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir/flask_sqlalchemy-3.0.5-py3-none-any.whl ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' + specifier=flask_sqlalchemy==3.0.5 + '[' -z flask_sqlalchemy==3.0.5 ']' + TMPDIR=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT --prefix /usr --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir flask_sqlalchemy==3.0.5 Using pip 24.3.1 from /usr/lib/python3.14/site-packages/pip (python 3.14) Looking in links: /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/pyproject-wheeldir Processing ./pyproject-wheeldir/flask_sqlalchemy-3.0.5-py3-none-any.whl Installing collected packages: flask_sqlalchemy Successfully installed flask_sqlalchemy-3.0.5 + '[' -d /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/bin ']' + rm -f /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + site_dirs+=("/usr/lib/python3.14/site-packages") + '[' /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib64/python3.14/site-packages '!=' /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + '[' -d /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib64/python3.14/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/redhat + /usr/bin/python3 -B /usr/lib/rpm/redhat/pyproject_preprocess_record.py --buildroot /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT --record /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info/RECORD --output /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-record + rm -fv /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info/RECORD removed '/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info/RECORD' + rm -fv /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info/REQUESTED removed '/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy-3.0.5.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-ghost-distinfo ++ cut -f1 '-d ' + lines=1 + '[' 1 -ne 1 ']' + RPM_FILES_ESCAPE=4.19 + /usr/bin/python3 /usr/lib/rpm/redhat/pyproject_save_files.py --output-files /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-files --output-modules /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-modules --buildroot /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT --sitelib /usr/lib/python3.14/site-packages --sitearch /usr/lib64/python3.14/site-packages --python-version 3.14 --pyproject-record /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/python-flask-sqlalchemy-3.0.5-7.fc43.x86_64-pyproject-record --prefix /usr flask_sqlalchemy + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip /usr/bin/strip + /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/check-rpaths + /usr/lib/rpm/redhat/brp-mangle-shebangs + /usr/lib/rpm/brp-remove-la-files + /usr/lib/rpm/redhat/brp-python-rpm-in-distinfo + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j4 Bytecompiling .py files below /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14 using python3.14 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/bin/add-determinism --brp -j4 /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/cli.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/__init__.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/query.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/record_queries.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/model.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/table.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/session.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/track_modifications.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/pagination.cpython-314.pyc: rewriting with normalized contents /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/model.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/__pycache__/extension.cpython-314.pyc: rewriting with normalized contents Scanned 9 directories and 35 files, processed 11 inodes, 11 modified (2 replaced + 9 rewritten), 0 unsupported format, 0 errors Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.1Fcwsl + umask 022 + cd /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd flask_sqlalchemy-3.0.5 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + PATH=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/BUILDROOT/usr/lib/python3.14/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=4 + /usr/bin/pytest -Wdefault ============================= test session starts ============================== platform linux -- Python 3.14.0b1, pytest-8.3.4, pluggy-1.5.0 rootdir: /builddir/build/BUILD/python-flask-sqlalchemy-3.0.5-build/flask_sqlalchemy-3.0.5 configfile: pyproject.toml testpaths: tests collected 129 items tests/test_cli.py E [ 0%] tests/test_engine.py ............... [ 12%] tests/test_legacy_query.py EEEEFF [ 17%] tests/test_metadata.py ......FFF. [ 24%] tests/test_model.py ....F [ 28%] tests/test_model_bind.py FFFFFFF [ 34%] tests/test_model_name.py ...................FFFFFFFFFFFFF [ 58%] tests/test_pagination.py ...........................EEEEEEEEEE [ 87%] tests/test_record_queries.py F [ 88%] tests/test_session.py ...FF [ 92%] tests/test_table_bind.py .... [ 95%] tests/test_track_modifications.py F [ 96%] tests/test_view_query.py EEEEF [100%] ==================================== ERRORS ==================================== _____________________ ERROR at setup of test_shell_context _____________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ______________________ ERROR at setup of test_get_or_404 _______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _____________________ ERROR at setup of test_first_or_404 ______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ______________________ ERROR at setup of test_one_or_404 _______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________ ERROR at setup of test_paginate ________________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________ ERROR at setup of test_paginate ________________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ______________________ ERROR at setup of test_paginate_qs ______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _____________________ ERROR at setup of test_paginate_max ______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ____________________ ERROR at setup of test_next_page_size _____________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________ ERROR at setup of test_no_count ________________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError __________________ ERROR at setup of test_error_out[abc-None] __________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError __________________ ERROR at setup of test_error_out[None-abc] __________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ___________________ ERROR at setup of test_error_out[0-None] ___________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError __________________ ERROR at setup of test_error_out[None--1] ___________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _____________________ ERROR at setup of test_no_items_404 ______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ____________________ ERROR at setup of test_view_get_or_404 ____________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _____________________ ERROR at setup of test_first_or_404 ______________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ____________________ ERROR at setup of test_view_one_or_404 ____________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________ ERROR at setup of test_paginate ________________________ app = , db = @pytest.fixture def Todo(app: Flask, db: SQLAlchemy) -> t.Generator[t.Any, None, None]: > class Todo(db.Model): tests/conftest.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Todo'>, originating_module = 'conftest' key = 'query_class', attr_cls = , required = False is_dataclass_field = False, expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Todo.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError =================================== FAILURES =================================== ___________________________ test_default_query_class ___________________________ db = @pytest.mark.usefixtures("app_ctx") def test_default_query_class(db: SQLAlchemy) -> None: > class Parent(db.Model): tests/test_legacy_query.py:79: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Parent'> originating_module = 'test_legacy_query', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Parent.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ___________________________ test_custom_query_class ____________________________ app = @pytest.mark.usefixtures("app_ctx") def test_custom_query_class(app: Flask) -> None: class CustomQuery(Query): pass db = SQLAlchemy(app, query_class=CustomQuery) > class Parent(db.Model): tests/test_legacy_query.py:106: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Parent'> originating_module = 'test_legacy_query', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Parent.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _____________________________ test_create_drop_all _____________________________ expression = 't.ClassVar', module_name = 'test_metadata' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_metadata' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_metadata' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_metadata', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_metadata' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: app = @pytest.mark.usefixtures("app_ctx") def test_create_drop_all(app: Flask) -> None: app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"} db = SQLAlchemy(app) > class User(db.Model): tests/test_metadata.py:65: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_metadata', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError ___________________________ test_create_key_spec[a] ____________________________ expression = 't.ClassVar', module_name = 'test_metadata' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_metadata' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_metadata' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_metadata', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_metadata' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: app = , bind_key = 'a' @pytest.mark.usefixtures("app_ctx") @pytest.mark.parametrize("bind_key", ["a", ["a"]]) def test_create_key_spec(app: Flask, bind_key: str | list[str | None]) -> None: app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"} db = SQLAlchemy(app) > class User(db.Model): tests/test_metadata.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_metadata', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError _______________________ test_create_key_spec[bind_key1] ________________________ expression = 't.ClassVar', module_name = 'test_metadata' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_metadata' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_metadata' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_metadata', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_metadata' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: app = , bind_key = ['a'] @pytest.mark.usefixtures("app_ctx") @pytest.mark.parametrize("bind_key", ["a", ["a"]]) def test_create_key_spec(app: Flask, bind_key: str | list[str | None]) -> None: app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"} db = SQLAlchemy(app) > class User(db.Model): tests/test_metadata.py:96: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_metadata', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError _______________________________ test_model_repr ________________________________ db = @pytest.mark.usefixtures("app_ctx") def test_model_repr(db: SQLAlchemy) -> None: > class User(db.Model): tests/test_model.py:46: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "User.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ____________________________ test_bind_key_default _____________________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_bind_key_default(db: SQLAlchemy) -> None: > class User(db.Model): tests/test_model_bind.py:9: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError ____________________________ test_metadata_per_bind ____________________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_metadata_per_bind(db: SQLAlchemy) -> None: > class User(db.Model): tests/test_model_bind.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError _____________________ test_multiple_binds_same_table_name ______________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .UserA'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_multiple_binds_same_table_name(db: SQLAlchemy) -> None: > class UserA(db.Model): tests/test_model_bind.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .UserA'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError _____________________________ test_inherit_parent ______________________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_inherit_parent(db: SQLAlchemy) -> None: > class User(db.Model): tests/test_model_bind.py:39: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError _________________________ test_inherit_abstract_parent _________________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_inherit_abstract_parent(db: SQLAlchemy) -> None: class AbstractUser(db.Model): __abstract__ = True __bind_key__ = "auth" > class User(AbstractUser): tests/test_model_bind.py:59: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError ____________________________ test_explicit_metadata ____________________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_explicit_metadata(db: SQLAlchemy) -> None: other_metadata = sa.MetaData() > class User(db.Model): tests/test_model_bind.py:69: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError _____________________________ test_explicit_table ______________________________ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_model_bind' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_model_bind' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: db = def test_explicit_table(db: SQLAlchemy) -> None: user_table = db.Table( "user", sa.Column("id", sa.Integer, primary_key=True), bind_key="auth", ) > class User(db.Model): tests/test_model_bind.py:85: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_bind', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError __________________________________ test_name ___________________________________ db = def test_name(db: SQLAlchemy) -> None: > class FOOBar(db.Model): tests/test_model_name.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .FOOBar'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "FOOBar.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________________ test_single_name _______________________________ db = def test_single_name(db: SQLAlchemy) -> None: """Single table inheritance should not set a new name.""" > class Duck(db.Model): tests/test_model_name.py:70: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________________ test_joined_name _______________________________ db = def test_joined_name(db: SQLAlchemy) -> None: """Model has a separate primary key; it should set a new name.""" > class Duck(db.Model): tests/test_model_name.py:83: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ________________________________ test_mixin_id _________________________________ db = def test_mixin_id(db: SQLAlchemy) -> None: """Primary key provided by mixin should still allow model to set tablename. """ class Base: id = sa.Column(sa.Integer, primary_key=True) > class Duck(Base, db.Model): tests/test_model_name.py:100: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________________ test_mixin_attr ________________________________ db = def test_mixin_attr(db: SQLAlchemy) -> None: """A declared attr tablename will be used down multiple levels of inheritance. """ class Mixin: @sa_orm.declared_attr # type: ignore[arg-type] def __tablename__(cls) -> str: # noqa: B902 return cls.__name__.upper() # type: ignore[attr-defined,no-any-return] > class Bird(Mixin, db.Model): tests/test_model_name.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Bird'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Bird.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ______________________________ test_abstract_name ______________________________ db = def test_abstract_name(db: SQLAlchemy) -> None: """Abstract model should not set a name. Subclass should set a name.""" class Base(db.Model): __abstract__ = True id = sa.Column(sa.Integer, primary_key=True) > class Duck(Base): tests/test_model_name.py:140: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ___________________________ test_complex_inheritance ___________________________ db = def test_complex_inheritance(db: SQLAlchemy) -> None: """Joined table inheritance, but the new primary key is provided by a mixin, not directly on the class. """ > class Duck(db.Model): tests/test_model_name.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________________ test_manual_name _______________________________ db = def test_manual_name(db: SQLAlchemy) -> None: """Setting a manual name prevents generation for the immediate model. A name is generated for joined but not single-table inheritance. """ > class Duck(db.Model): tests/test_model_name.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ___________________________ test_primary_constraint ____________________________ db = def test_primary_constraint(db: SQLAlchemy) -> None: """Primary key will be picked up from table args.""" > class Duck(db.Model): tests/test_model_name.py:195: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________ test_no_access_to_class_property _______________________ db = def test_no_access_to_class_property(db: SQLAlchemy) -> None: """Ensure the implementation doesn't access class properties or declared attrs while inspecting the unmapped model. """ class class_property: def __init__(self, f: t.Callable[..., t.Any]) -> None: self.f = f def __get__(self, instance: t.Any, owner: type[t.Any]) -> t.Any: return self.f(owner) > class Duck(db.Model): tests/test_model_name.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ___________________________ test_metadata_has_table ____________________________ db = def test_metadata_has_table(db: SQLAlchemy) -> None: user = db.Table("user", sa.Column("id", sa.Integer, primary_key=True)) > class User(db.Model): tests/test_model_name.py:243: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "User.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError ____________________ test_correct_error_for_no_primary_key _____________________ db = def test_correct_error_for_no_primary_key(db: SQLAlchemy) -> None: with pytest.raises(sa_exc.ArgumentError) as info: class User(db.Model): pass > assert "could not assemble any primary key" in str(info.value) E assert 'could not assemble any primary key' in 'Type annotation for "User.query_class" can\'t be correctly interpreted for Annotated Declarative Table form. ORM ann...mapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr)' E + where 'Type annotation for "User.query_class" can\'t be correctly interpreted for Annotated Declarative Table form. ORM ann...mapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr)' = str(MappedAnnotationError('Type annotation for "User.query_class" can\'t be correctly interpreted for Annotated Declarativ...notations which don\'t use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class.')) E + where MappedAnnotationError('Type annotation for "User.query_class" can\'t be correctly interpreted for Annotated Declarativ...notations which don\'t use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class.') = .value tests/test_model_name.py:255: AssertionError _________________________ test_single_has_parent_table _________________________ db = def test_single_has_parent_table(db: SQLAlchemy) -> None: > class Duck(db.Model): tests/test_model_name.py:259: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Duck'> originating_module = 'test_model_name', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Duck.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError _______________________________ test_query_info ________________________________ expression = 't.ClassVar', module_name = 'test_record_queries' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]' originating_module = 'test_record_queries' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_record_queries' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .Example'> originating_module = 'test_record_queries', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]' originating_module = 'test_record_queries' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: app = @pytest.mark.usefixtures("app_ctx") def test_query_info(app: Flask) -> None: app.config["SQLALCHEMY_RECORD_QUERIES"] = True db = SQLAlchemy(app) > class Example(db.Model): tests/test_record_queries.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Example'> originating_module = 'test_record_queries', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError __________________________ test_session_uses_bind_key __________________________ expression = 't.ClassVar', module_name = 'test_session' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_session' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_session' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_session', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_session' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: app = @pytest.mark.usefixtures("app_ctx") def test_session_uses_bind_key(app: Flask) -> None: app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"} db = SQLAlchemy(app) > class User(db.Model): tests/test_session.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_session', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError __________________________ test_get_bind_inheritance ___________________________ expression = 't.ClassVar', module_name = 'test_session' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: > annotation = eval(expression, base_globals, locals_) E NameError: name 't' is not defined /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:277: NameError The above exception was the direct cause of the following exception: annotation = 't.ClassVar[type[Query]]', originating_module = 'test_session' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: > obj = eval_name_only(mm.group(1), originating_module) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2221: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:293: in eval_name_only return eval_expression(name, module_name, locals_=locals_) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ expression = 't.ClassVar', module_name = 'test_session' def eval_expression( expression: str, module_name: str, *, locals_: Optional[Mapping[str, Any]] = None, in_class: Optional[Type[Any]] = None, ) -> Any: try: base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ except KeyError as ke: raise NameError( f"Module {module_name} isn't present in sys.modules; can't " f"evaluate expression {expression}" ) from ke try: if in_class is not None: cls_namespace = dict(in_class.__dict__) cls_namespace.setdefault(in_class.__name__, in_class) # see #10899. We want the locals/globals to take precedence # over the class namespace in this context, even though this # is not the usual way variables would resolve. cls_namespace.update(base_globals) annotation = eval(expression, cls_namespace, locals_) else: annotation = eval(expression, base_globals, locals_) except Exception as err: > raise NameError( f"Could not de-stringify annotation {expression!r}" ) from err E NameError: Could not de-stringify annotation 't.ClassVar' /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:279: NameError The above exception was the direct cause of the following exception: raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_session', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. > annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/sqlalchemy/util/typing.py:157: in de_stringify_annotation annotation = str_cleanup_fn(annotation, originating_module) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ annotation = 't.ClassVar[type[Query]]', originating_module = 'test_session' def _cleanup_mapped_str_annotation( annotation: str, originating_module: str ) -> str: # fix up an annotation that comes in as the form: # 'Mapped[List[Address]]' so that it instead looks like: # 'Mapped[List["Address"]]' , which will allow us to get # "Address" as a string # additionally, resolve symbols for these names since this is where # we'd have to do it inner: Optional[Match[str]] mm = re.match(r"^([^ \|]+?)\[(.+)\]$", annotation) if not mm: return annotation # ticket #8759. Resolve the Mapped name to a real symbol. # originally this just checked the name. try: obj = eval_name_only(mm.group(1), originating_module) except NameError as ne: > raise _CleanupError( f'For annotation "{annotation}", could not resolve ' f'container type "{mm.group(1)}". ' "Please ensure this type is imported at the module level " "outside of TYPE_CHECKING blocks" ) from ne E sqlalchemy.orm.util._CleanupError: For annotation "t.ClassVar[type[Query]]", could not resolve container type "t.ClassVar". Please ensure this type is imported at the module level outside of TYPE_CHECKING blocks /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2223: _CleanupError The above exception was the direct cause of the following exception: app = @pytest.mark.usefixtures("app_ctx") def test_get_bind_inheritance(app: Flask) -> None: app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"} db = SQLAlchemy(app) > class User(db.Model): tests/test_session.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .User'> originating_module = 'test_session', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: > raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce E sqlalchemy.orm.exc.MappedAnnotationError: Could not interpret annotation t.ClassVar[type[Query]]. Check that it uses names that are correctly imported at the module level. See chained stack trace for more hints. /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2330: MappedAnnotationError ___________________________ test_track_modifications ___________________________ app = @pytest.mark.usefixtures("app_ctx") def test_track_modifications(app: Flask) -> None: app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True db = SQLAlchemy(app) > class Example(db.Model): tests/test_track_modifications.py:21: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Example'> originating_module = 'test_track_modifications', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Example.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError __________________________ test_view_get_or_404_typed __________________________ db = , app = @pytest.mark.usefixtures("app_ctx") def test_view_get_or_404_typed(db: SQLAlchemy, app: Flask) -> None: > class Quiz(db.Model): tests/test_view_query.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:100: in __init__ super().__init__(name, bases, d, **kwargs) ../BUILDROOT/usr/lib/python3.14/site-packages/flask_sqlalchemy/model.py:120: in __init__ super().__init__(name, bases, d, **kwargs) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_api.py:198: in __init__ _as_declarative(reg, cls, dict_) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:244: in _as_declarative return _MapperConfig.setup_mapping(registry, cls, dict_, None, {}) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:325: in setup_mapping return _ClassScanMapperConfig( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:561: in __init__ self._scan_attributes() /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1021: in _scan_attributes collected_annotation = self._collect_annotation( /usr/lib64/python3.14/site-packages/sqlalchemy/orm/decl_base.py:1303: in _collect_annotation extracted = _extract_mapped_subtype( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ raw_annotation = 't.ClassVar[type[Query]]' cls = .Quiz'> originating_module = 'test_view_query', key = 'query_class' attr_cls = , required = False, is_dataclass_field = False expect_mapped = True, raiseerr = True def _extract_mapped_subtype( raw_annotation: Optional[_AnnotationScanType], cls: type, originating_module: str, key: str, attr_cls: Type[Any], required: bool, is_dataclass_field: bool, expect_mapped: bool = True, raiseerr: bool = True, ) -> Optional[Tuple[Union[_AnnotationScanType, str], Optional[type]]]: """given an annotation, figure out if it's ``Mapped[something]`` and if so, return the ``something`` part. Includes error raise scenarios and other options. """ if raw_annotation is None: if required: raise orm_exc.MappedAnnotationError( f"Python typing annotation is required for attribute " f'"{cls.__name__}.{key}" when primary argument(s) for ' f'"{attr_cls.__name__}" construct are None or not present' ) return None try: # destringify the "outside" of the annotation. note we are not # adding include_generic so it will *not* dig into generic contents, # which will remain as ForwardRef or plain str under future annotations # mode. The full destringify happens later when mapped_column goes # to do a full lookup in the registry type_annotations_map. annotated = de_stringify_annotation( cls, raw_annotation, originating_module, str_cleanup_fn=_cleanup_mapped_str_annotation, ) except _CleanupError as ce: raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ce except NameError as ne: if raiseerr and "Mapped[" in raw_annotation: # type: ignore raise orm_exc.MappedAnnotationError( f"Could not interpret annotation {raw_annotation}. " "Check that it uses names that are correctly imported at the " "module level. See chained stack trace for more hints." ) from ne annotated = raw_annotation # type: ignore if is_dataclass_field: return annotated, None else: if not hasattr(annotated, "__origin__") or not is_origin_of_cls( annotated, _MappedAnnotationBase ): if expect_mapped: if not raiseerr: return None origin = getattr(annotated, "__origin__", None) if origin is typing.ClassVar: return None # check for other kind of ORM descriptor like AssociationProxy, # don't raise for that (issue #9957) elif isinstance(origin, type) and issubclass( origin, ORMDescriptor ): return None > raise orm_exc.MappedAnnotationError( f'Type annotation for "{cls.__name__}.{key}" ' "can't be correctly interpreted for " "Annotated Declarative Table form. ORM annotations " "should normally make use of the ``Mapped[]`` generic " "type, or other ORM-compatible generic type, as a " "container for the actual type, which indicates the " "intent that the attribute is mapped. " "Class variables that are not intended to be mapped " "by the ORM should use ClassVar[]. " "To allow Annotated Declarative to disregard legacy " "annotations which don't use Mapped[] to pass, set " '"__allow_unmapped__ = True" on the class or a ' "superclass this class.", code="zlpr", ) E sqlalchemy.orm.exc.MappedAnnotationError: Type annotation for "Quiz.query_class" can't be correctly interpreted for Annotated Declarative Table form. ORM annotations should normally make use of the ``Mapped[]`` generic type, or other ORM-compatible generic type, as a container for the actual type, which indicates the intent that the attribute is mapped. Class variables that are not intended to be mapped by the ORM should use ClassVar[]. To allow Annotated Declarative to disregard legacy annotations which don't use Mapped[] to pass, set "__allow_unmapped__ = True" on the class or a superclass this class. (Background on this error at: https://sqlalche.me/e/20/zlpr) /usr/lib64/python3.14/site-packages/sqlalchemy/orm/util.py:2366: MappedAnnotationError =============================== warnings summary =============================== tests/test_legacy_query.py::test_get_or_404 /usr/lib64/python3.14/ast.py:282: ResourceWarning: unclosed database in def iter_child_nodes(node): Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_legacy_query.py::test_get_or_404 /usr/lib64/python3.14/ast.py:282: ResourceWarning: unclosed database in def iter_child_nodes(node): Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_model.py::test_model_repr /usr/lib64/python3.14/site-packages/sqlalchemy/engine/create.py:92: ResourceWarning: unclosed database in @util.deprecated_params( Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_model.py::test_model_repr /usr/lib64/python3.14/site-packages/sqlalchemy/engine/create.py:92: ResourceWarning: unclosed database in @util.deprecated_params( Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_model.py::test_model_repr /usr/lib64/python3.14/site-packages/sqlalchemy/engine/create.py:92: ResourceWarning: unclosed database in @util.deprecated_params( Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_model.py::test_model_repr /usr/lib64/python3.14/site-packages/sqlalchemy/engine/create.py:92: ResourceWarning: unclosed database in @util.deprecated_params( Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_legacy_query.py::test_default_query_class - sqlalchemy.orm.... FAILED tests/test_legacy_query.py::test_custom_query_class - sqlalchemy.orm.e... FAILED tests/test_metadata.py::test_create_drop_all - sqlalchemy.orm.exc.Mapp... FAILED tests/test_metadata.py::test_create_key_spec[a] - sqlalchemy.orm.exc.M... FAILED tests/test_metadata.py::test_create_key_spec[bind_key1] - sqlalchemy.o... FAILED tests/test_model.py::test_model_repr - sqlalchemy.orm.exc.MappedAnnota... FAILED tests/test_model_bind.py::test_bind_key_default - sqlalchemy.orm.exc.M... FAILED tests/test_model_bind.py::test_metadata_per_bind - sqlalchemy.orm.exc.... FAILED tests/test_model_bind.py::test_multiple_binds_same_table_name - sqlalc... FAILED tests/test_model_bind.py::test_inherit_parent - sqlalchemy.orm.exc.Map... FAILED tests/test_model_bind.py::test_inherit_abstract_parent - sqlalchemy.or... FAILED tests/test_model_bind.py::test_explicit_metadata - sqlalchemy.orm.exc.... FAILED tests/test_model_bind.py::test_explicit_table - sqlalchemy.orm.exc.Map... FAILED tests/test_model_name.py::test_name - sqlalchemy.orm.exc.MappedAnnotat... FAILED tests/test_model_name.py::test_single_name - sqlalchemy.orm.exc.Mapped... FAILED tests/test_model_name.py::test_joined_name - sqlalchemy.orm.exc.Mapped... FAILED tests/test_model_name.py::test_mixin_id - sqlalchemy.orm.exc.MappedAnn... FAILED tests/test_model_name.py::test_mixin_attr - sqlalchemy.orm.exc.MappedA... FAILED tests/test_model_name.py::test_abstract_name - sqlalchemy.orm.exc.Mapp... FAILED tests/test_model_name.py::test_complex_inheritance - sqlalchemy.orm.ex... FAILED tests/test_model_name.py::test_manual_name - sqlalchemy.orm.exc.Mapped... FAILED tests/test_model_name.py::test_primary_constraint - sqlalchemy.orm.exc... FAILED tests/test_model_name.py::test_no_access_to_class_property - sqlalchem... FAILED tests/test_model_name.py::test_metadata_has_table - sqlalchemy.orm.exc... FAILED tests/test_model_name.py::test_correct_error_for_no_primary_key - asse... FAILED tests/test_model_name.py::test_single_has_parent_table - sqlalchemy.or... FAILED tests/test_record_queries.py::test_query_info - sqlalchemy.orm.exc.Map... FAILED tests/test_session.py::test_session_uses_bind_key - sqlalchemy.orm.exc... FAILED tests/test_session.py::test_get_bind_inheritance - sqlalchemy.orm.exc.... FAILED tests/test_track_modifications.py::test_track_modifications - sqlalche... FAILED tests/test_view_query.py::test_view_get_or_404_typed - sqlalchemy.orm.... ERROR tests/test_cli.py::test_shell_context - sqlalchemy.orm.exc.MappedAnnota... ERROR tests/test_legacy_query.py::test_get_or_404 - sqlalchemy.orm.exc.Mapped... ERROR tests/test_legacy_query.py::test_first_or_404 - sqlalchemy.orm.exc.Mapp... ERROR tests/test_legacy_query.py::test_one_or_404 - sqlalchemy.orm.exc.Mapped... ERROR tests/test_legacy_query.py::test_paginate - sqlalchemy.orm.exc.MappedAn... ERROR tests/test_pagination.py::test_paginate - sqlalchemy.orm.exc.MappedAnno... ERROR tests/test_pagination.py::test_paginate_qs - sqlalchemy.orm.exc.MappedA... ERROR tests/test_pagination.py::test_paginate_max - sqlalchemy.orm.exc.Mapped... ERROR tests/test_pagination.py::test_next_page_size - sqlalchemy.orm.exc.Mapp... ERROR tests/test_pagination.py::test_no_count - sqlalchemy.orm.exc.MappedAnno... ERROR tests/test_pagination.py::test_error_out[abc-None] - sqlalchemy.orm.exc... ERROR tests/test_pagination.py::test_error_out[None-abc] - sqlalchemy.orm.exc... ERROR tests/test_pagination.py::test_error_out[0-None] - sqlalchemy.orm.exc.M... ERROR tests/test_pagination.py::test_error_out[None--1] - sqlalchemy.orm.exc.... ERROR tests/test_pagination.py::test_no_items_404 - sqlalchemy.orm.exc.Mapped... ERROR tests/test_view_query.py::test_view_get_or_404 - sqlalchemy.orm.exc.Map... ERROR tests/test_view_query.py::test_first_or_404 - sqlalchemy.orm.exc.Mapped... ERROR tests/test_view_query.py::test_view_one_or_404 - sqlalchemy.orm.exc.Map... ERROR tests/test_view_query.py::test_paginate - sqlalchemy.orm.exc.MappedAnno... ============= 31 failed, 79 passed, 6 warnings, 19 errors in 3.33s ============= error: Bad exit status from /var/tmp/rpm-tmp.1Fcwsl (%check) Bad exit status from /var/tmp/rpm-tmp.1Fcwsl (%check) RPM build errors: Finish: rpmbuild python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm Finish: build phase for python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-rawhide-x86_64-1747220931.871542/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names ERROR: Exception(/var/lib/copr-rpmbuild/results/python-flask-sqlalchemy-3.0.5-7.fc43.src.rpm) Config(fedora-rawhide-x86_64) 0 minutes 14 seconds INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results INFO: Cleaning up build root ('cleanup_on_failure=True') Start: clean chroot INFO: unmounting tmpfs. Finish: clean chroot ERROR: Command failed: # /usr/bin/systemd-nspawn -q -M bb26ae9d876146d4b86f5ccf0f7c078f -D /var/lib/mock/fedora-rawhide-x86_64-1747220931.871542/root -a -u mockbuild --capability=cap_ipc_lock --rlimit=RLIMIT_NOFILE=10240 --capability=cap_ipc_lock --bind=/tmp/mock-resolv.g35m0w6x:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin '--setenv=PROMPT_COMMAND=printf "\033]0;\007"' '--setenv=PS1= \s-\v\$ ' --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c '/usr/bin/rpmbuild -ba --noprep --target x86_64 --nodeps /builddir/build/originals/python-flask-sqlalchemy.spec' Copr build error: Build failed