Warning: Permanently added '2620:52:6:1161:dead:beef:cafe:c35b' (ED25519) to the list of known hosts. You can reproduce this build on your computer by running: sudo dnf install copr-rpmbuild /usr/bin/copr-rpmbuild --verbose --drop-resultdir --task-url https://copr.fedorainfracloud.org/backend/get-build-task/10167811-fedora-rawhide-x86_64 --chroot fedora-rawhide-x86_64 Version: 1.6 PID: 3289 Logging PID: 3291 Task: {'allow_user_ssh': False, 'appstream': False, 'background': False, 'build_id': 10167811, 'buildroot_pkgs': [], 'chroot': 'fedora-rawhide-x86_64', 'enable_net': False, 'fedora_review': False, 'git_hash': 'c755314f0f8f306145e3aea1b43151cbe746a138', 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/r0x0d/python-pydocket/python-pydocket', 'isolation': 'default', 'memory_reqs': 2048, 'package_name': 'python-pydocket', 'package_version': '0.17.9-1', 'project_dirname': 'python-pydocket', 'project_name': 'python-pydocket', 'project_owner': 'r0x0d', 'repo_priority': None, 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/r0x0d/python-pydocket/fedora-rawhide-x86_64/', 'id': 'copr_base', 'name': 'Copr repository', 'priority': None}, {'baseurl': 'https://download.copr.fedorainfracloud.org/results/r0x0d/python-fakeredis/fedora-rawhide-x86_64/', 'id': 'copr_r0x0d_python_fakeredis', 'name': 'Additional repo copr_r0x0d_python_fakeredis'}], 'sandbox': 'r0x0d/python-pydocket--r0x0d', 'source_json': {}, 'source_type': None, 'ssh_public_keys': None, 'storage': 0, 'submitter': 'r0x0d', 'tags': [], 'task_id': '10167811-fedora-rawhide-x86_64', 'timeout': 18000, 'uses_devel_repo': False, 'with_opts': [], 'without_opts': []} Running: git clone https://copr-dist-git.fedorainfracloud.org/git/r0x0d/python-pydocket/python-pydocket /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/r0x0d/python-pydocket/python-pydocket', '/var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket'... Running: git checkout c755314f0f8f306145e3aea1b43151cbe746a138 -- cmd: ['git', 'checkout', 'c755314f0f8f306145e3aea1b43151cbe746a138', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket rc: 0 stdout: stderr: Note: switching to 'c755314f0f8f306145e3aea1b43151cbe746a138'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at c755314 automatic import of python-pydocket Running: dist-git-client sources cmd: ['dist-git-client', 'sources'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket rc: 0 stdout: stderr: INFO: Reading stdout from command: git rev-parse --abbrev-ref HEAD INFO: Reading stdout from command: git rev-parse HEAD INFO: Reading sources specification file: sources INFO: Downloading pydocket-0.17.9.tar.gz INFO: Reading stdout from command: curl --help all INFO: Calling: curl -H Pragma: -H 'Accept-Encoding: identity' -o pydocket-0.17.9.tar.gz --location --connect-timeout 60 --retry 3 --retry-delay 10 --remote-time --show-error --fail --retry-all-errors https://copr-dist-git.fedorainfracloud.org/repo/pkgs/r0x0d/python-pydocket/python-pydocket/pydocket-0.17.9.tar.gz/md5/383526fbd90631115d39d7ec1511cf29/pydocket-0.17.9.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed tail: /var/lib/copr-rpmbuild/main.log: file truncated 100 340k 100 340k 0 0 3587k 0 --:--:-- --:--:-- --:--:-- 3620k INFO: Reading stdout from command: md5sum pydocket-0.17.9.tar.gz Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket/python-pydocket.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1772025190.540876 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 6.6 starting (python version = 3.14.2, NVR = mock-6.6-1.fc43), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket/python-pydocket.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-pdw38je1/python-pydocket --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1772025190.540876 -r /var/lib/copr-rpmbuild/results/configs/child.cfg Start(bootstrap): init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish(bootstrap): init plugins 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-pdw38je1/python-pydocket/python-pydocket.spec) Config(fedora-rawhide-x86_64) Start: clean chroot Finish: clean chroot Mock Version: 6.6 INFO: Mock Version: 6.6 Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1772025190.540876/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start(bootstrap): cleaning package manager metadata Finish(bootstrap): cleaning package manager metadata INFO: Guessed host environment type: unknown INFO: Using container image: registry.fedoraproject.org/fedora:rawhide INFO: Pulling image: registry.fedoraproject.org/fedora:rawhide INFO: Tagging container image as mock-bootstrap-3bfd87dd-2dd5-4a48-974b-158d9e120b41 INFO: Checking that b7ad5da5c9cea843c60ab79e59d3fb327b35a9a5109d932ea091a7526832b192 image matches host's architecture INFO: Copy content of container b7ad5da5c9cea843c60ab79e59d3fb327b35a9a5109d932ea091a7526832b192 to /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1772025190.540876/root INFO: mounting b7ad5da5c9cea843c60ab79e59d3fb327b35a9a5109d932ea091a7526832b192 with podman image mount INFO: image b7ad5da5c9cea843c60ab79e59d3fb327b35a9a5109d932ea091a7526832b192 as /var/lib/containers/storage/overlay/a3d594a252c5ab0900ef909ee17702922cd916945244274ee4908869ce7f12e9/merged INFO: umounting image b7ad5da5c9cea843c60ab79e59d3fb327b35a9a5109d932ea091a7526832b192 (/var/lib/containers/storage/overlay/a3d594a252c5ab0900ef909ee17702922cd916945244274ee4908869ce7f12e9/merged) with podman image umount INFO: Removing image mock-bootstrap-3bfd87dd-2dd5-4a48-974b-158d9e120b41 INFO: Package manager dnf5 detected and used (fallback) INFO: Not updating bootstrap chroot, bootstrap_image_ready=True Start(bootstrap): creating root cache Finish(bootstrap): creating root cache Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-1772025190.540876/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 (direct choice) INFO: Buildroot is handled by package management downloaded with a bootstrap image: rpm-6.0.1-5.fc45.x86_64 rpm-sequoia-1.10.1-1.fc45.x86_64 dnf5-5.4.0.0-2.fc45.x86_64 dnf5-plugins-5.4.0.0-2.fc45.x86_64 Start: installing minimal buildroot with dnf5 Updating and loading repositories: Additional repo copr_r0x0d_python_fake 100% | 2.4 KiB/s | 4.0 KiB | 00m02s Copr repository 100% | 955.0 B/s | 1.6 KiB | 00m02s fedora 100% | 7.5 MiB/s | 21.9 MiB | 00m03s Repositories loaded. Package Arch Version Repository Size Installing group/module packages: bash x86_64 0:5.3.9-3.fc44 fedora 8.5 MiB bzip2 x86_64 0:1.0.8-23.fc44 fedora 95.0 KiB coreutils x86_64 0:9.10-2.fc45 fedora 5.6 MiB cpio x86_64 0:2.15-9.fc44 fedora 1.1 MiB diffutils x86_64 0:3.12-5.fc44 fedora 1.6 MiB fedora-release-common noarch 0:45-0.1 fedora 20.5 KiB findutils x86_64 1:4.10.0-7.fc44 fedora 1.9 MiB gawk x86_64 0:5.4.0-1.fc45 fedora 2.2 MiB glibc-minimal-langpack x86_64 0:2.43.9000-2.fc45 fedora 0.0 B grep x86_64 0:3.12-3.fc44 fedora 1.0 MiB gzip x86_64 0:1.14-2.fc44 fedora 401.6 KiB info x86_64 0:7.2-9.fc45 fedora 365.6 KiB patch x86_64 0:2.8-4.fc44 fedora 226.6 KiB redhat-rpm-config noarch 0:343-20.fc45 fedora 183.7 KiB rpm-build x86_64 0:6.0.1-5.fc45 fedora 294.6 KiB sed x86_64 0:4.9-8.fc45 fedora 857.2 KiB shadow-utils x86_64 2:4.19.3-1.fc45 fedora 4.0 MiB tar x86_64 2:1.35-8.fc44 fedora 3.0 MiB unzip x86_64 0:6.0-69.fc44 fedora 445.8 KiB util-linux x86_64 0:2.41.3-12.fc44 fedora 3.5 MiB which x86_64 0:2.23-4.fc44 fedora 83.4 KiB xz x86_64 1:5.8.2-2.fc44 fedora 1.3 MiB Installing dependencies: R-srpm-macros noarch 0:1.3.5-1.fc45 fedora 3.5 KiB add-determinism x86_64 0:0.7.2-4.fc45 fedora 2.2 MiB alternatives x86_64 0:1.33-5.fc44 fedora 62.1 KiB ansible-srpm-macros noarch 0:1-20.1.fc44 fedora 35.7 KiB audit-libs x86_64 0:4.1.3-1.fc44 fedora 390.5 KiB binutils x86_64 0:2.46-1.fc45 fedora 27.2 MiB build-reproducibility-srpm-macros noarch 0:0.7.2-4.fc45 fedora 1.2 KiB bzip2-libs x86_64 0:1.0.8-23.fc44 fedora 80.5 KiB ca-certificates noarch 0:2025.2.80_v9.0.304-5.fc44 fedora 2.7 MiB cmake-srpm-macros noarch 0:4.2.3-2.fc45 fedora 524.0 B coreutils-common x86_64 0:9.10-2.fc45 fedora 10.7 MiB crypto-policies noarch 0:20251128-3.git19878fe.fc44 fedora 132.6 KiB curl x86_64 0:8.19.0~rc2-1.fc45 fedora 479.4 KiB cyrus-sasl-lib x86_64 0:2.1.28-35.fc44 fedora 2.3 MiB debugedit x86_64 0:5.2-6.fc44 fedora 218.3 KiB dwz x86_64 0:0.16-3.fc44 fedora 290.9 KiB ed x86_64 0:1.22.5-2.fc45 fedora 149.7 KiB efi-srpm-macros noarch 0:6-6.fc44 fedora 40.2 KiB elfutils x86_64 0:0.194-3.fc44 fedora 2.9 MiB elfutils-debuginfod-client x86_64 0:0.194-3.fc44 fedora 83.7 KiB elfutils-default-yama-scope noarch 0:0.194-3.fc44 fedora 1.8 KiB elfutils-libelf x86_64 0:0.194-3.fc44 fedora 1.1 MiB elfutils-libs x86_64 0:0.194-3.fc44 fedora 715.3 KiB fedora-gpg-keys noarch 0:45-0.1 fedora 133.4 KiB fedora-release noarch 0:45-0.1 fedora 0.0 B fedora-release-identity-basic noarch 0:45-0.1 fedora 664.0 B fedora-repos noarch 0:45-0.1 fedora 4.9 KiB fedora-repos-rawhide noarch 0:45-0.1 fedora 2.2 KiB file x86_64 0:5.46-9.fc44 fedora 100.1 KiB file-libs x86_64 0:5.46-9.fc44 fedora 11.9 MiB filesystem x86_64 0:3.18-52.fc44 fedora 112.0 B filesystem-srpm-macros noarch 0:3.18-52.fc44 fedora 38.2 KiB fonts-srpm-macros noarch 1:5.0.0-3.fc45 fedora 55.8 KiB forge-srpm-macros noarch 0:0.4.0-4.fc44 fedora 38.9 KiB fpc-srpm-macros noarch 0:1.3-16.fc44 fedora 144.0 B gap-srpm-macros noarch 0:2-2.fc44 fedora 2.1 KiB gdb-minimal x86_64 0:17.1-4.fc45 fedora 14.2 MiB gdbm-libs x86_64 1:1.23-11.fc44 fedora 129.6 KiB ghc-srpm-macros noarch 0:1.10-1.fc44 fedora 792.0 B glibc x86_64 0:2.43.9000-2.fc45 fedora 7.0 MiB glibc-common x86_64 0:2.43.9000-2.fc45 fedora 1.0 MiB glibc-gconv-extra x86_64 0:2.43.9000-2.fc45 fedora 7.7 MiB gmp x86_64 1:6.3.0-5.fc44 fedora 815.2 KiB gnat-srpm-macros noarch 0:7-2.fc44 fedora 1.0 KiB gnulib-l10n noarch 0:20241231-2.fc44 fedora 655.0 KiB gnupg2 x86_64 0:2.4.9-5.fc44 fedora 6.5 MiB gnupg2-dirmngr x86_64 0:2.4.9-5.fc44 fedora 633.9 KiB gnupg2-gpg-agent x86_64 0:2.4.9-5.fc44 fedora 682.5 KiB gnupg2-gpgconf x86_64 0:2.4.9-5.fc44 fedora 249.7 KiB gnupg2-keyboxd x86_64 0:2.4.9-5.fc44 fedora 201.2 KiB gnupg2-verify x86_64 0:2.4.9-5.fc44 fedora 360.3 KiB gnutls x86_64 0:3.8.12-1.fc45 fedora 3.7 MiB go-srpm-macros noarch 0:3.8.0-2.fc44 fedora 61.9 KiB gpgverify noarch 0:2.2-4.fc44 fedora 8.7 KiB ima-evm-utils-libs x86_64 0:1.6.2-8.fc44 fedora 60.6 KiB jansson x86_64 0:2.14-4.fc44 fedora 88.9 KiB java-srpm-macros noarch 0:1-8.fc44 fedora 870.0 B json-c x86_64 0:0.18-8.fc44 fedora 82.6 KiB kernel-srpm-macros noarch 0:1.0-28.fc44 fedora 1.9 KiB keyutils-libs x86_64 0:1.6.3-7.fc44 fedora 54.2 KiB krb5-libs x86_64 0:1.22.2-2.fc45 fedora 2.4 MiB libacl x86_64 0:2.3.2-6.fc44 fedora 35.8 KiB libarchive x86_64 0:3.8.4-2.fc44 fedora 991.2 KiB libassuan x86_64 0:2.5.7-5.fc44 fedora 163.8 KiB libattr x86_64 0:2.5.2-8.fc44 fedora 24.3 KiB libblkid x86_64 0:2.41.3-12.fc44 fedora 274.3 KiB libbrotli x86_64 0:1.2.0-3.fc44 fedora 865.0 KiB libcap x86_64 0:2.77-2.fc44 fedora 212.1 KiB libcap-ng x86_64 0:0.9.1-1.fc45 fedora 68.7 KiB libcbor x86_64 0:0.13.0-2.fc44 fedora 79.5 KiB libcom_err x86_64 0:1.47.3-4.fc44 fedora 63.0 KiB libcurl x86_64 0:8.19.0~rc2-1.fc45 fedora 1.0 MiB libeconf x86_64 0:0.7.9-3.fc44 fedora 64.8 KiB libevent x86_64 0:2.1.12-17.fc44 fedora 978.7 KiB libfdisk x86_64 0:2.41.3-12.fc44 fedora 388.3 KiB libffi x86_64 0:3.5.2-2.fc44 fedora 87.7 KiB libfido2 x86_64 0:1.16.0-5.fc44 fedora 246.4 KiB libfsverity x86_64 0:1.6-4.fc44 fedora 28.4 KiB libgcc x86_64 0:16.0.1-0.7.fc45 fedora 270.7 KiB libgcrypt x86_64 0:1.12.1-1.fc45 fedora 1.7 MiB libgomp x86_64 0:16.0.1-0.7.fc45 fedora 572.5 KiB libgpg-error x86_64 0:1.59-1.fc45 fedora 946.4 KiB libidn2 x86_64 0:2.3.8-3.fc44 fedora 556.4 KiB libksba x86_64 0:1.6.8-1.fc45 fedora 421.9 KiB liblastlog2 x86_64 0:2.41.3-12.fc44 fedora 37.6 KiB libmount x86_64 0:2.41.3-12.fc44 fedora 388.6 KiB libnghttp2 x86_64 0:1.68.0-3.fc44 fedora 166.1 KiB libnghttp3 x86_64 0:1.15.0-1.fc44 fedora 159.2 KiB libpkgconf x86_64 0:2.5.1-1.fc45 fedora 90.1 KiB libpsl x86_64 0:0.21.5-7.fc44 fedora 76.3 KiB libselinux x86_64 0:3.10-1.fc44 fedora 201.0 KiB libselinux-utils x86_64 0:3.10-1.fc44 fedora 305.7 KiB libsemanage x86_64 0:3.10-1.fc44 fedora 312.3 KiB libsepol x86_64 0:3.10-1.fc44 fedora 870.0 KiB libsmartcols x86_64 0:2.41.3-12.fc44 fedora 188.3 KiB libssh x86_64 0:0.12.0-1.fc45 fedora 719.1 KiB libssh-config noarch 0:0.12.0-1.fc45 fedora 277.0 B libstdc++ x86_64 0:16.0.1-0.7.fc45 fedora 2.9 MiB libtasn1 x86_64 0:4.20.0-3.fc44 fedora 180.2 KiB libtool-ltdl x86_64 0:2.5.4-10.fc44 fedora 70.0 KiB libunistring x86_64 0:1.1-11.fc44 fedora 1.7 MiB libusb1 x86_64 0:1.0.29-5.fc44 fedora 175.2 KiB libuuid x86_64 0:2.41.3-12.fc44 fedora 37.2 KiB libverto x86_64 0:0.3.2-12.fc44 fedora 25.3 KiB libxcrypt x86_64 0:4.5.2-3.fc44 fedora 293.2 KiB libxml2 x86_64 0:2.12.10-6.fc44 fedora 1.8 MiB libzstd x86_64 0:1.5.7-5.fc44 fedora 956.1 KiB linkdupes x86_64 0:0.7.2-4.fc45 fedora 789.3 KiB lua-libs x86_64 0:5.5.0-1.fc45 fedora 297.9 KiB lua-srpm-macros noarch 0:1-17.fc44 fedora 1.3 KiB lz4-libs x86_64 0:1.10.0-4.fc44 fedora 157.3 KiB mpfr x86_64 0:4.2.2-3.fc44 fedora 849.1 KiB ncurses-base noarch 0:6.6-1.fc44 fedora 329.7 KiB ncurses-libs x86_64 0:6.6-1.fc44 fedora 968.9 KiB nettle x86_64 0:3.10.1-3.fc44 fedora 794.3 KiB ngtcp2 x86_64 0:1.19.0-2.fc44 fedora 330.2 KiB ngtcp2-crypto-ossl x86_64 0:1.19.0-2.fc44 fedora 51.6 KiB npth x86_64 0:1.8-4.fc44 fedora 49.5 KiB ocaml-srpm-macros noarch 0:11-3.fc44 fedora 1.9 KiB openblas-srpm-macros noarch 0:2-21.fc44 fedora 112.0 B openldap x86_64 0:2.6.10-7.fc44 fedora 667.5 KiB openssl-libs x86_64 1:3.5.5-1.fc44 fedora 9.2 MiB p11-kit x86_64 0:0.26.2-1.fc45 fedora 2.6 MiB p11-kit-trust x86_64 0:0.26.2-1.fc45 fedora 478.3 KiB package-notes-srpm-macros noarch 0:0.17-3.fc45 fedora 1.6 KiB pam-libs x86_64 0:1.7.2-1.fc44 fedora 130.5 KiB pcre2 x86_64 0:10.47-1.fc44.1 fedora 718.6 KiB pcre2-syntax noarch 0:10.47-1.fc44.1 fedora 281.9 KiB perl-srpm-macros noarch 0:1-61.fc44 fedora 861.0 B pkgconf x86_64 0:2.5.1-1.fc45 fedora 92.7 KiB pkgconf-m4 noarch 0:2.5.1-1.fc45 fedora 14.3 KiB pkgconf-pkg-config x86_64 0:2.5.1-1.fc45 fedora 989.0 B policycoreutils x86_64 0:3.10-2.fc45 fedora 884.4 KiB popt x86_64 0:1.19-10.fc44 fedora 132.6 KiB publicsuffix-list-dafsa noarch 0:20260116-1.fc44 fedora 70.4 KiB pyproject-srpm-macros noarch 0:1.18.6-2.fc44 fedora 1.9 KiB python-srpm-macros noarch 0:3.14-10.fc44 fedora 51.6 KiB qt5-srpm-macros noarch 0:5.15.18-2.fc44 fedora 500.0 B qt6-srpm-macros noarch 0:6.10.2-1.fc45 fedora 472.0 B readline x86_64 0:8.3-4.fc44 fedora 519.5 KiB rpm x86_64 0:6.0.1-5.fc45 fedora 3.1 MiB rpm-build-libs x86_64 0:6.0.1-5.fc45 fedora 276.3 KiB rpm-libs x86_64 0:6.0.1-5.fc45 fedora 961.2 KiB rpm-plugin-selinux x86_64 0:6.0.1-5.fc45 fedora 11.9 KiB rpm-sequoia x86_64 0:1.10.1-1.fc45 fedora 2.4 MiB rpm-sign-libs x86_64 0:6.0.1-5.fc45 fedora 39.6 KiB rust-srpm-macros noarch 0:28.4-3.fc44 fedora 5.5 KiB selinux-policy noarch 0:42.24-1.fc45 fedora 32.0 KiB selinux-policy-targeted noarch 0:42.24-1.fc45 fedora 18.5 MiB setup noarch 0:2.15.0-28.fc44 fedora 724.9 KiB sqlite-libs x86_64 0:3.51.2-1.fc44 fedora 1.6 MiB systemd-libs x86_64 0:259.1-1.fc45 fedora 2.4 MiB systemd-standalone-sysusers x86_64 0:259.1-1.fc45 fedora 305.7 KiB tpm2-tss x86_64 0:4.1.3-9.fc44 fedora 1.6 MiB tree-sitter-srpm-macros noarch 0:0.4.2-2.fc44 fedora 8.3 KiB util-linux-core x86_64 0:2.41.3-12.fc44 fedora 1.5 MiB xxhash-libs x86_64 0:0.8.3-4.fc44 fedora 94.0 KiB xz-libs x86_64 1:5.8.2-2.fc44 fedora 217.7 KiB zig-srpm-macros noarch 0:1-8.fc44 fedora 1.3 KiB zip x86_64 0:3.0-45.fc44 fedora 698.0 KiB zlib-ng-compat x86_64 0:2.3.3-5.fc45 fedora 165.6 KiB zstd x86_64 0:1.5.7-5.fc44 fedora 502.4 KiB Installing groups: Buildsystem building group Transaction Summary: Installing: 184 packages Total size of inbound packages is 69 MiB. Need to download 69 MiB. After this operation, 224 MiB extra will be used (install 224 MiB, remove 0 B). [ 1/184] bzip2-0:1.0.8-23.fc44.x86_64 100% | 2.8 MiB/s | 52.1 KiB | 00m00s [ 2/184] cpio-0:2.15-9.fc44.x86_64 100% | 71.6 MiB/s | 293.4 KiB | 00m00s [ 3/184] bash-0:5.3.9-3.fc44.x86_64 100% | 65.3 MiB/s | 1.9 MiB | 00m00s [ 4/184] coreutils-0:9.10-2.fc45.x86_6 100% | 39.6 MiB/s | 1.2 MiB | 00m00s [ 5/184] diffutils-0:3.12-5.fc44.x86_6 100% | 48.3 MiB/s | 395.3 KiB | 00m00s [ 6/184] fedora-release-common-0:45-0. 100% | 11.9 MiB/s | 24.3 KiB | 00m00s [ 7/184] glibc-minimal-langpack-0:2.43 100% | 27.3 MiB/s | 83.9 KiB | 00m00s [ 8/184] grep-0:3.12-3.fc44.x86_64 100% | 73.6 MiB/s | 301.6 KiB | 00m00s [ 9/184] findutils-1:4.10.0-7.fc44.x86 100% | 89.9 MiB/s | 552.5 KiB | 00m00s [ 10/184] gzip-0:1.14-2.fc44.x86_64 100% | 87.4 MiB/s | 179.1 KiB | 00m00s [ 11/184] info-0:7.2-9.fc45.x86_64 100% | 45.6 MiB/s | 186.7 KiB | 00m00s [ 12/184] patch-0:2.8-4.fc44.x86_64 100% | 37.5 MiB/s | 115.2 KiB | 00m00s [ 13/184] redhat-rpm-config-0:343-20.fc 100% | 25.5 MiB/s | 78.4 KiB | 00m00s [ 14/184] rpm-build-0:6.0.1-5.fc45.x86_ 100% | 68.3 MiB/s | 139.9 KiB | 00m00s [ 15/184] sed-0:4.9-8.fc45.x86_64 100% | 77.9 MiB/s | 319.0 KiB | 00m00s [ 16/184] shadow-utils-2:4.19.3-1.fc45. 100% | 129.7 MiB/s | 1.3 MiB | 00m00s [ 17/184] unzip-0:6.0-69.fc44.x86_64 100% | 32.5 MiB/s | 199.6 KiB | 00m00s [ 18/184] tar-2:1.35-8.fc44.x86_64 100% | 94.2 MiB/s | 868.2 KiB | 00m00s [ 19/184] which-0:2.23-4.fc44.x86_64 100% | 20.6 MiB/s | 42.2 KiB | 00m00s [ 20/184] xz-1:5.8.2-2.fc44.x86_64 100% | 118.6 MiB/s | 607.2 KiB | 00m00s [ 21/184] gawk-0:5.4.0-1.fc45.x86_64 100% | 116.8 MiB/s | 1.2 MiB | 00m00s [ 22/184] util-linux-0:2.41.3-12.fc44.x 100% | 109.5 MiB/s | 1.2 MiB | 00m00s [ 23/184] filesystem-0:3.18-52.fc44.x86 100% | 102.6 MiB/s | 1.3 MiB | 00m00s [ 24/184] ncurses-libs-0:6.6-1.fc44.x86 100% | 56.0 MiB/s | 344.1 KiB | 00m00s [ 25/184] bzip2-libs-0:1.0.8-23.fc44.x8 100% | 21.4 MiB/s | 43.8 KiB | 00m00s [ 26/184] gmp-1:6.3.0-5.fc44.x86_64 100% | 63.0 MiB/s | 322.5 KiB | 00m00s [ 27/184] glibc-0:2.43.9000-2.fc45.x86_ 100% | 125.0 MiB/s | 2.4 MiB | 00m00s [ 28/184] libacl-0:2.3.2-6.fc44.x86_64 100% | 8.1 MiB/s | 24.8 KiB | 00m00s [ 29/184] libattr-0:2.5.2-8.fc44.x86_64 100% | 8.8 MiB/s | 17.9 KiB | 00m00s [ 30/184] libcap-0:2.77-2.fc44.x86_64 100% | 43.2 MiB/s | 88.5 KiB | 00m00s [ 31/184] coreutils-common-0:9.10-2.fc4 100% | 125.5 MiB/s | 2.1 MiB | 00m00s [ 32/184] libselinux-0:3.10-1.fc44.x86_ 100% | 24.9 MiB/s | 102.0 KiB | 00m00s [ 33/184] fedora-repos-0:45-0.1.noarch 100% | 4.5 MiB/s | 9.2 KiB | 00m00s [ 34/184] systemd-libs-0:259.1-1.fc45.x 100% | 105.9 MiB/s | 867.4 KiB | 00m00s [ 35/184] glibc-common-0:2.43.9000-2.fc 100% | 73.7 MiB/s | 377.2 KiB | 00m00s [ 36/184] ed-0:1.22.5-2.fc45.x86_64 100% | 27.8 MiB/s | 85.4 KiB | 00m00s [ 37/184] openssl-libs-1:3.5.5-1.fc44.x 100% | 152.5 MiB/s | 2.7 MiB | 00m00s [ 38/184] pcre2-0:10.47-1.fc44.1.x86_64 100% | 45.2 MiB/s | 277.7 KiB | 00m00s [ 39/184] R-srpm-macros-0:1.3.5-1.fc45. 100% | 3.5 MiB/s | 10.8 KiB | 00m00s [ 40/184] ansible-srpm-macros-0:1-20.1. 100% | 9.8 MiB/s | 20.1 KiB | 00m00s [ 41/184] build-reproducibility-srpm-ma 100% | 12.8 MiB/s | 13.1 KiB | 00m00s [ 42/184] cmake-srpm-macros-0:4.2.3-2.f 100% | 5.1 MiB/s | 10.5 KiB | 00m00s [ 43/184] efi-srpm-macros-0:6-6.fc44.no 100% | 22.0 MiB/s | 22.6 KiB | 00m00s [ 44/184] dwz-0:0.16-3.fc44.x86_64 100% | 67.8 MiB/s | 138.9 KiB | 00m00s [ 45/184] file-0:5.46-9.fc44.x86_64 100% | 23.9 MiB/s | 49.0 KiB | 00m00s [ 46/184] filesystem-srpm-macros-0:3.18 100% | 13.0 MiB/s | 26.6 KiB | 00m00s [ 47/184] fonts-srpm-macros-1:5.0.0-3.f 100% | 13.3 MiB/s | 27.2 KiB | 00m00s [ 48/184] forge-srpm-macros-0:0.4.0-4.f 100% | 9.8 MiB/s | 20.0 KiB | 00m00s [ 49/184] fpc-srpm-macros-0:1.3-16.fc44 100% | 3.9 MiB/s | 7.9 KiB | 00m00s [ 50/184] gap-srpm-macros-0:2-2.fc44.no 100% | 4.5 MiB/s | 9.1 KiB | 00m00s [ 51/184] ghc-srpm-macros-0:1.10-1.fc44 100% | 4.3 MiB/s | 8.8 KiB | 00m00s [ 52/184] gnat-srpm-macros-0:7-2.fc44.n 100% | 4.3 MiB/s | 8.7 KiB | 00m00s [ 53/184] go-srpm-macros-0:3.8.0-2.fc44 100% | 13.8 MiB/s | 28.2 KiB | 00m00s [ 54/184] java-srpm-macros-0:1-8.fc44.n 100% | 4.0 MiB/s | 8.1 KiB | 00m00s [ 55/184] kernel-srpm-macros-0:1.0-28.f 100% | 4.4 MiB/s | 9.0 KiB | 00m00s [ 56/184] lua-srpm-macros-0:1-17.fc44.n 100% | 4.3 MiB/s | 8.9 KiB | 00m00s [ 57/184] ocaml-srpm-macros-0:11-3.fc44 100% | 4.5 MiB/s | 9.3 KiB | 00m00s [ 58/184] openblas-srpm-macros-0:2-21.f 100% | 3.8 MiB/s | 7.8 KiB | 00m00s [ 59/184] package-notes-srpm-macros-0:0 100% | 4.7 MiB/s | 9.7 KiB | 00m00s [ 60/184] perl-srpm-macros-0:1-61.fc44. 100% | 4.1 MiB/s | 8.4 KiB | 00m00s [ 61/184] pyproject-srpm-macros-0:1.18. 100% | 6.6 MiB/s | 13.5 KiB | 00m00s [ 62/184] python-srpm-macros-0:3.14-10. 100% | 11.7 MiB/s | 24.0 KiB | 00m00s [ 63/184] qt6-srpm-macros-0:6.10.2-1.fc 100% | 4.4 MiB/s | 9.1 KiB | 00m00s [ 64/184] qt5-srpm-macros-0:5.15.18-2.f 100% | 4.2 MiB/s | 8.7 KiB | 00m00s [ 65/184] rust-srpm-macros-0:28.4-3.fc4 100% | 5.4 MiB/s | 11.1 KiB | 00m00s [ 66/184] tree-sitter-srpm-macros-0:0.4 100% | 6.6 MiB/s | 13.5 KiB | 00m00s [ 67/184] rpm-0:6.0.1-5.fc45.x86_64 100% | 94.1 MiB/s | 578.3 KiB | 00m00s [ 68/184] zig-srpm-macros-0:1-8.fc44.no 100% | 4.3 MiB/s | 8.8 KiB | 00m00s [ 69/184] debugedit-0:5.2-6.fc44.x86_64 100% | 42.3 MiB/s | 86.7 KiB | 00m00s [ 70/184] zip-0:3.0-45.fc44.x86_64 100% | 64.5 MiB/s | 264.4 KiB | 00m00s [ 71/184] elfutils-0:0.194-3.fc44.x86_6 100% | 114.1 MiB/s | 583.9 KiB | 00m00s [ 72/184] elfutils-libelf-0:0.194-3.fc4 100% | 50.1 MiB/s | 205.1 KiB | 00m00s [ 73/184] libarchive-0:3.8.4-2.fc44.x86 100% | 86.2 MiB/s | 441.4 KiB | 00m00s [ 74/184] libgcc-0:16.0.1-0.7.fc45.x86_ 100% | 39.2 MiB/s | 120.3 KiB | 00m00s [ 75/184] popt-0:1.19-10.fc44.x86_64 100% | 32.7 MiB/s | 66.9 KiB | 00m00s [ 76/184] libstdc++-0:16.0.1-0.7.fc45.x 100% | 153.5 MiB/s | 943.3 KiB | 00m00s [ 77/184] readline-0:8.3-4.fc44.x86_64 100% | 56.1 MiB/s | 229.8 KiB | 00m00s [ 78/184] rpm-build-libs-0:6.0.1-5.fc45 100% | 43.0 MiB/s | 132.1 KiB | 00m00s [ 79/184] zstd-0:1.5.7-5.fc44.x86_64 100% | 62.7 MiB/s | 192.5 KiB | 00m00s [ 80/184] rpm-libs-0:6.0.1-5.fc45.x86_6 100% | 81.2 MiB/s | 415.5 KiB | 00m00s [ 81/184] audit-libs-0:4.1.3-1.fc44.x86 100% | 46.3 MiB/s | 142.1 KiB | 00m00s [ 82/184] libeconf-0:0.7.9-3.fc44.x86_6 100% | 17.7 MiB/s | 36.2 KiB | 00m00s [ 83/184] libsemanage-0:3.10-1.fc44.x86 100% | 62.1 MiB/s | 127.3 KiB | 00m00s [ 84/184] libxcrypt-0:4.5.2-3.fc44.x86_ 100% | 42.7 MiB/s | 131.2 KiB | 00m00s [ 85/184] pam-libs-0:1.7.2-1.fc44.x86_6 100% | 28.8 MiB/s | 59.1 KiB | 00m00s [ 86/184] setup-0:2.15.0-28.fc44.noarch 100% | 51.2 MiB/s | 157.2 KiB | 00m00s [ 87/184] xz-libs-1:5.8.2-2.fc44.x86_64 100% | 57.0 MiB/s | 116.8 KiB | 00m00s [ 88/184] mpfr-0:4.2.2-3.fc44.x86_64 100% | 116.5 MiB/s | 357.8 KiB | 00m00s [ 89/184] libblkid-0:2.41.3-12.fc44.x86 100% | 63.2 MiB/s | 129.4 KiB | 00m00s [ 90/184] libcap-ng-0:0.9.1-1.fc45.x86_ 100% | 16.0 MiB/s | 32.8 KiB | 00m00s [ 91/184] liblastlog2-0:2.41.3-12.fc44. 100% | 11.5 MiB/s | 23.5 KiB | 00m00s [ 92/184] libfdisk-0:2.41.3-12.fc44.x86 100% | 54.7 MiB/s | 168.1 KiB | 00m00s [ 93/184] libmount-0:2.41.3-12.fc44.x86 100% | 55.7 MiB/s | 171.0 KiB | 00m00s [ 94/184] libuuid-0:2.41.3-12.fc44.x86_ 100% | 13.0 MiB/s | 26.6 KiB | 00m00s [ 95/184] libsmartcols-0:2.41.3-12.fc44 100% | 42.4 MiB/s | 86.9 KiB | 00m00s [ 96/184] zlib-ng-compat-0:2.3.3-5.fc45 100% | 29.7 MiB/s | 91.2 KiB | 00m00s [ 97/184] util-linux-core-0:2.41.3-12.f 100% | 108.9 MiB/s | 557.8 KiB | 00m00s [ 98/184] ncurses-base-0:6.6-1.fc44.noa 100% | 43.0 MiB/s | 88.0 KiB | 00m00s [ 99/184] gnulib-l10n-0:20241231-2.fc44 100% | 73.4 MiB/s | 150.3 KiB | 00m00s [100/184] libsepol-0:3.10-1.fc44.x86_64 100% | 89.8 MiB/s | 367.6 KiB | 00m00s [101/184] glibc-gconv-extra-0:2.43.9000 100% | 138.1 MiB/s | 1.7 MiB | 00m00s [102/184] crypto-policies-0:20251128-3. 100% | 48.0 MiB/s | 98.3 KiB | 00m00s [103/184] fedora-repos-rawhide-0:45-0.1 100% | 4.3 MiB/s | 8.8 KiB | 00m00s [104/184] fedora-gpg-keys-0:45-0.1.noar 100% | 46.0 MiB/s | 141.3 KiB | 00m00s [105/184] ca-certificates-0:2025.2.80_v 100% | 105.6 MiB/s | 973.5 KiB | 00m00s [106/184] pcre2-syntax-0:10.47-1.fc44.1 100% | 53.6 MiB/s | 164.7 KiB | 00m00s [107/184] linkdupes-0:0.7.2-4.fc45.x86_ 100% | 84.7 MiB/s | 347.0 KiB | 00m00s [108/184] add-determinism-0:0.7.2-4.fc4 100% | 120.3 MiB/s | 862.4 KiB | 00m00s [109/184] curl-0:8.19.0~rc2-1.fc45.x86_ 100% | 78.3 MiB/s | 240.6 KiB | 00m00s [110/184] file-libs-0:5.46-9.fc44.x86_6 100% | 104.2 MiB/s | 853.4 KiB | 00m00s [111/184] elfutils-libs-0:0.194-3.fc44. 100% | 55.2 MiB/s | 282.8 KiB | 00m00s [112/184] elfutils-debuginfod-client-0: 100% | 22.8 MiB/s | 46.7 KiB | 00m00s [113/184] libzstd-0:1.5.7-5.fc44.x86_64 100% | 118.5 MiB/s | 364.2 KiB | 00m00s [114/184] lz4-libs-0:1.10.0-4.fc44.x86_ 100% | 25.3 MiB/s | 77.7 KiB | 00m00s [115/184] libxml2-0:2.12.10-6.fc44.x86_ 100% | 117.9 MiB/s | 724.6 KiB | 00m00s [116/184] lua-libs-0:5.5.0-1.fc45.x86_6 100% | 46.8 MiB/s | 143.6 KiB | 00m00s [117/184] libgomp-0:16.0.1-0.7.fc45.x86 100% | 74.3 MiB/s | 380.7 KiB | 00m00s [118/184] rpm-sign-libs-0:6.0.1-5.fc45. 100% | 27.3 MiB/s | 27.9 KiB | 00m00s [119/184] elfutils-default-yama-scope-0 100% | 5.8 MiB/s | 11.9 KiB | 00m00s [120/184] sqlite-libs-0:3.51.2-1.fc44.x 100% | 130.1 MiB/s | 799.2 KiB | 00m00s [121/184] rpm-sequoia-0:1.10.1-1.fc45.x 100% | 111.6 MiB/s | 914.2 KiB | 00m00s [122/184] json-c-0:0.18-8.fc44.x86_64 100% | 11.3 MiB/s | 46.3 KiB | 00m00s [123/184] ima-evm-utils-libs-0:1.6.2-8. 100% | 14.6 MiB/s | 30.0 KiB | 00m00s [124/184] libfsverity-0:1.6-4.fc44.x86_ 100% | 9.4 MiB/s | 19.2 KiB | 00m00s [125/184] gpgverify-0:2.2-4.fc44.noarch 100% | 5.5 MiB/s | 11.2 KiB | 00m00s [126/184] gnupg2-dirmngr-0:2.4.9-5.fc44 100% | 55.2 MiB/s | 282.4 KiB | 00m00s [127/184] gnupg2-gpg-agent-0:2.4.9-5.fc 100% | 91.6 MiB/s | 281.3 KiB | 00m00s [128/184] gnupg2-0:2.4.9-5.fc44.x86_64 100% | 137.7 MiB/s | 1.7 MiB | 00m00s [129/184] gnupg2-gpgconf-0:2.4.9-5.fc44 100% | 38.1 MiB/s | 117.1 KiB | 00m00s [130/184] gnupg2-keyboxd-0:2.4.9-5.fc44 100% | 47.5 MiB/s | 97.3 KiB | 00m00s [131/184] libassuan-0:2.5.7-5.fc44.x86_ 100% | 33.6 MiB/s | 68.9 KiB | 00m00s [132/184] gnupg2-verify-0:2.4.9-5.fc44. 100% | 43.2 MiB/s | 176.8 KiB | 00m00s [133/184] libgcrypt-0:1.12.1-1.fc45.x86 100% | 102.4 MiB/s | 629.4 KiB | 00m00s [134/184] libgpg-error-0:1.59-1.fc45.x8 100% | 62.0 MiB/s | 253.8 KiB | 00m00s [135/184] npth-0:1.8-4.fc44.x86_64 100% | 8.4 MiB/s | 25.8 KiB | 00m00s [136/184] libksba-0:1.6.8-1.fc45.x86_64 100% | 41.2 MiB/s | 168.9 KiB | 00m00s [137/184] tpm2-tss-0:4.1.3-9.fc44.x86_6 100% | 86.1 MiB/s | 440.9 KiB | 00m00s [138/184] gnutls-0:3.8.12-1.fc45.x86_64 100% | 155.8 MiB/s | 1.4 MiB | 00m00s [139/184] openldap-0:2.6.10-7.fc44.x86_ 100% | 52.9 MiB/s | 271.1 KiB | 00m00s [140/184] libusb1-0:1.0.29-5.fc44.x86_6 100% | 20.2 MiB/s | 82.8 KiB | 00m00s [141/184] libidn2-0:2.3.8-3.fc44.x86_64 100% | 57.1 MiB/s | 175.5 KiB | 00m00s [142/184] libtasn1-0:4.20.0-3.fc44.x86_ 100% | 24.8 MiB/s | 76.2 KiB | 00m00s [143/184] libunistring-0:1.1-11.fc44.x8 100% | 107.0 MiB/s | 547.8 KiB | 00m00s [144/184] nettle-0:3.10.1-3.fc44.x86_64 100% | 83.6 MiB/s | 428.0 KiB | 00m00s [145/184] p11-kit-0:0.26.2-1.fc45.x86_6 100% | 90.5 MiB/s | 555.9 KiB | 00m00s [146/184] cyrus-sasl-lib-0:2.1.28-35.fc 100% | 111.7 MiB/s | 800.7 KiB | 00m00s [147/184] libtool-ltdl-0:2.5.4-10.fc44. 100% | 12.1 MiB/s | 37.0 KiB | 00m00s [148/184] libevent-0:2.1.12-17.fc44.x86 100% | 70.2 MiB/s | 287.4 KiB | 00m00s [149/184] libffi-0:3.5.2-2.fc44.x86_64 100% | 20.7 MiB/s | 42.4 KiB | 00m00s [150/184] gdbm-libs-1:1.23-11.fc44.x86_ 100% | 28.7 MiB/s | 58.8 KiB | 00m00s [151/184] alternatives-0:1.33-5.fc44.x8 100% | 19.9 MiB/s | 40.8 KiB | 00m00s [152/184] jansson-0:2.14-4.fc44.x86_64 100% | 15.3 MiB/s | 47.1 KiB | 00m00s [153/184] pkgconf-pkg-config-0:2.5.1-1. 100% | 4.6 MiB/s | 9.5 KiB | 00m00s [154/184] pkgconf-0:2.5.1-1.fc45.x86_64 100% | 23.8 MiB/s | 48.7 KiB | 00m00s [155/184] pkgconf-m4-0:2.5.1-1.fc45.noa 100% | 6.7 MiB/s | 13.8 KiB | 00m00s [156/184] libpkgconf-0:2.5.1-1.fc45.x86 100% | 20.8 MiB/s | 42.7 KiB | 00m00s [157/184] fedora-release-0:45-0.1.noarc 100% | 6.4 MiB/s | 13.1 KiB | 00m00s [158/184] p11-kit-trust-0:0.26.2-1.fc45 100% | 35.7 MiB/s | 146.4 KiB | 00m00s [159/184] systemd-standalone-sysusers-0 100% | 48.9 MiB/s | 150.1 KiB | 00m00s [160/184] xxhash-libs-0:0.8.3-4.fc44.x8 100% | 13.4 MiB/s | 41.2 KiB | 00m00s [161/184] fedora-release-identity-basic 100% | 4.5 MiB/s | 13.9 KiB | 00m00s [162/184] binutils-0:2.46-1.fc45.x86_64 100% | 174.5 MiB/s | 6.1 MiB | 00m00s [163/184] libcurl-0:8.19.0~rc2-1.fc45.x 100% | 37.1 MiB/s | 456.4 KiB | 00m00s [164/184] libbrotli-0:1.2.0-3.fc44.x86_ 100% | 84.9 MiB/s | 347.8 KiB | 00m00s [165/184] krb5-libs-0:1.22.2-2.fc45.x86 100% | 112.1 MiB/s | 803.3 KiB | 00m00s [166/184] gdb-minimal-0:17.1-4.fc45.x86 100% | 143.5 MiB/s | 4.7 MiB | 00m00s [167/184] libnghttp2-0:1.68.0-3.fc44.x8 100% | 10.8 MiB/s | 77.2 KiB | 00m00s [168/184] libnghttp3-0:1.15.0-1.fc44.x8 100% | 14.4 MiB/s | 73.9 KiB | 00m00s [169/184] libpsl-0:0.21.5-7.fc44.x86_64 100% | 21.2 MiB/s | 65.3 KiB | 00m00s [170/184] libssh-0:0.12.0-1.fc45.x86_64 100% | 95.6 MiB/s | 293.7 KiB | 00m00s [171/184] ngtcp2-0:1.19.0-2.fc44.x86_64 100% | 50.4 MiB/s | 154.8 KiB | 00m00s [172/184] ngtcp2-crypto-ossl-0:1.19.0-2 100% | 13.4 MiB/s | 27.4 KiB | 00m00s [173/184] keyutils-libs-0:1.6.3-7.fc44. 100% | 15.4 MiB/s | 31.5 KiB | 00m00s [174/184] libcom_err-0:1.47.3-4.fc44.x8 100% | 13.2 MiB/s | 27.1 KiB | 00m00s [175/184] libverto-0:0.3.2-12.fc44.x86_ 100% | 10.3 MiB/s | 21.1 KiB | 00m00s [176/184] publicsuffix-list-dafsa-0:202 100% | 29.4 MiB/s | 60.3 KiB | 00m00s [177/184] libfido2-0:1.16.0-5.fc44.x86_ 100% | 51.0 MiB/s | 104.5 KiB | 00m00s [178/184] libssh-config-0:0.12.0-1.fc45 100% | 4.6 MiB/s | 9.4 KiB | 00m00s [179/184] libcbor-0:0.13.0-2.fc44.x86_6 100% | 11.7 MiB/s | 36.0 KiB | 00m00s [180/184] policycoreutils-0:3.10-2.fc45 100% | 63.2 MiB/s | 258.8 KiB | 00m00s [181/184] selinux-policy-0:42.24-1.fc45 100% | 22.5 MiB/s | 69.0 KiB | 00m00s [182/184] libselinux-utils-0:3.10-1.fc4 100% | 58.4 MiB/s | 119.6 KiB | 00m00s [183/184] rpm-plugin-selinux-0:6.0.1-5. 100% | 9.3 MiB/s | 19.1 KiB | 00m00s [184/184] selinux-policy-targeted-0:42. 100% | 200.3 MiB/s | 6.8 MiB | 00m00s -------------------------------------------------------------------------------- [184/184] Total 100% | 192.4 MiB/s | 68.9 MiB | 00m00s Running transaction Importing OpenPGP key 0xF577861E: UserID : "Fedora (45) " Fingerprint: 4F50A6114CD5C6976A7F1179655A4B02F577861E From : file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-45-primary The key was successfully imported. Importing OpenPGP key 0xF577861E: UserID : "Fedora (45) " Fingerprint: 4F50A6114CD5C6976A7F1179655A4B02F577861E From : file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-45-primary The key was successfully imported. Importing OpenPGP key 0x6D9F90A6: UserID : "Fedora (44) " Fingerprint: 36F612DCF27F7D1A48A835E4DBFCF71C6D9F90A6 From : file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-44-primary The key was successfully imported. Importing OpenPGP key 0x91211FCE: UserID : "Fedora (46) " Fingerprint: D924B10D3E810DABDD8B56B596E7E91491211FCE From : file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-46-primary The key was successfully imported. [ 1/186] Verify package files 100% | 650.0 B/s | 184.0 B | 00m00s [ 2/186] Prepare transaction 100% | 2.4 KiB/s | 184.0 B | 00m00s [ 3/186] Installing libgcc-0:16.0.1-0. 100% | 266.0 MiB/s | 272.4 KiB | 00m00s [ 4/186] Installing libssh-config-0:0. 100% | 0.0 B/s | 816.0 B | 00m00s [ 5/186] Installing publicsuffix-list- 100% | 0.0 B/s | 71.1 KiB | 00m00s [ 6/186] Installing fedora-release-ide 100% | 898.4 KiB/s | 920.0 B | 00m00s [ 7/186] Installing fedora-gpg-keys-0: 100% | 29.6 MiB/s | 182.1 KiB | 00m00s [ 8/186] Installing fedora-repos-rawhi 100% | 0.0 B/s | 2.4 KiB | 00m00s [ 9/186] Installing fedora-repos-0:45- 100% | 0.0 B/s | 5.7 KiB | 00m00s [ 10/186] Installing fedora-release-com 100% | 24.2 MiB/s | 24.8 KiB | 00m00s [ 11/186] Installing fedora-release-0:4 100% | 17.3 KiB/s | 124.0 B | 00m00s >>> Running sysusers scriptlet: setup-0:2.15.0-28.fc44.noarch >>> Finished sysusers scriptlet: setup-0:2.15.0-28.fc44.noarch >>> Scriptlet output: >>> Creating group 'adm' with GID 4. >>> Creating group 'audio' with GID 63. >>> Creating group 'cdrom' with GID 11. >>> Creating group 'clock' with GID 103. >>> Creating group 'dialout' with GID 18. >>> Creating group 'disk' with GID 6. >>> Creating group 'floppy' with GID 19. >>> Creating group 'ftp' with GID 50. >>> Creating group 'games' with GID 20. >>> Creating group 'input' with GID 104. >>> Creating group 'kmem' with GID 9. >>> Creating group 'kvm' with GID 36. >>> Creating group 'lock' with GID 54. >>> Creating group 'lp' with GID 7. >>> Creating group 'mail' with GID 12. >>> Creating group 'man' with GID 15. >>> Creating group 'mem' with GID 8. >>> Creating group 'nobody' with GID 65534. >>> Creating group 'render' with GID 105. >>> Creating group 'root' with GID 0. >>> Creating group 'sgx' with GID 106. >>> Creating group 'sys' with GID 3. >>> Creating group 'tape' with GID 33. >>> Creating group 'tty' with GID 5. >>> Creating group 'users' with GID 100. >>> Creating group 'utmp' with GID 22. >>> Creating group 'video' with GID 39. >>> Creating group 'wheel' with GID 10. >>> Creating user 'adm' (adm) with UID 3 and GID 4. >>> Creating group 'bin' with GID 1. >>> Creating user 'bin' (bin) with UID 1 and GID 1. >>> Creating group 'daemon' with GID 2. >>> Creating user 'daemon' (daemon) with UID 2 and GID 2. >>> Creating user 'ftp' (FTP User) with UID 14 and GID 50. >>> Creating user 'games' (games) with UID 12 and GID 100. >>> Creating user 'halt' (halt) with UID 7 and GID 0. >>> Creating user 'lp' (lp) with UID 4 and GID 7. >>> Creating user 'mail' (mail) with UID 8 and GID 12. >>> Creating user 'nobody' (Kernel Overflow User) with UID 65534 and GID 65534. >>> Creating user 'operator' (operator) with UID 11 and GID 0. >>> Creating user 'root' (Super User) with UID 0 and GID 0. >>> Creating user 'shutdown' (shutdown) with UID 6 and GID 0. >>> Creating user 'sync' (sync) with UID 5 and GID 0. >>> [ 12/186] Installing setup-0:2.15.0-28. 100% | 44.6 MiB/s | 730.6 KiB | 00m00s >>> [RPM] /etc/hosts created as /etc/hosts.rpmnew [ 13/186] Installing filesystem-0:3.18- 100% | 2.0 MiB/s | 212.8 KiB | 00m00s [ 14/186] Installing pkgconf-m4-0:2.5.1 100% | 0.0 B/s | 14.7 KiB | 00m00s [ 15/186] Installing pcre2-syntax-0:10. 100% | 277.7 MiB/s | 284.3 KiB | 00m00s [ 16/186] Installing gnulib-l10n-0:2024 100% | 161.6 MiB/s | 661.9 KiB | 00m00s [ 17/186] Installing coreutils-common-0 100% | 305.3 MiB/s | 10.7 MiB | 00m00s [ 18/186] Installing ncurses-base-0:6.6 100% | 57.8 MiB/s | 355.3 KiB | 00m00s [ 19/186] Installing bash-0:5.3.9-3.fc4 100% | 242.3 MiB/s | 8.5 MiB | 00m00s [ 20/186] Installing glibc-common-0:2.4 100% | 54.2 MiB/s | 1.0 MiB | 00m00s [ 21/186] Installing glibc-gconv-extra- 100% | 221.7 MiB/s | 7.8 MiB | 00m00s [ 22/186] Installing glibc-0:2.43.9000- 100% | 169.9 MiB/s | 7.0 MiB | 00m00s [ 23/186] Installing ncurses-libs-0:6.6 100% | 190.5 MiB/s | 975.4 KiB | 00m00s [ 24/186] Installing glibc-minimal-lang 100% | 0.0 B/s | 124.0 B | 00m00s [ 25/186] Installing zlib-ng-compat-0:2 100% | 162.5 MiB/s | 166.4 KiB | 00m00s [ 26/186] Installing bzip2-libs-0:1.0.8 100% | 79.7 MiB/s | 81.6 KiB | 00m00s [ 27/186] Installing libgpg-error-0:1.5 100% | 58.1 MiB/s | 952.3 KiB | 00m00s [ 28/186] Installing libstdc++-0:16.0.1 100% | 324.7 MiB/s | 2.9 MiB | 00m00s [ 29/186] Installing libassuan-0:2.5.7- 100% | 161.8 MiB/s | 165.7 KiB | 00m00s [ 30/186] Installing libgcrypt-0:1.12.1 100% | 331.6 MiB/s | 1.7 MiB | 00m00s [ 31/186] Installing readline-0:8.3-4.f 100% | 254.7 MiB/s | 521.6 KiB | 00m00s [ 32/186] Installing gmp-1:6.3.0-5.fc44 100% | 266.1 MiB/s | 817.5 KiB | 00m00s [ 33/186] Installing xz-libs-1:5.8.2-2. 100% | 213.7 MiB/s | 218.8 KiB | 00m00s [ 34/186] Installing libuuid-0:2.41.3-1 100% | 37.3 MiB/s | 38.2 KiB | 00m00s [ 35/186] Installing systemd-libs-0:259 100% | 305.3 MiB/s | 2.4 MiB | 00m00s [ 36/186] Installing popt-0:1.19-10.fc4 100% | 45.3 MiB/s | 139.3 KiB | 00m00s [ 37/186] Installing libzstd-0:1.5.7-5. 100% | 311.6 MiB/s | 957.4 KiB | 00m00s [ 38/186] Installing elfutils-libelf-0: 100% | 376.3 MiB/s | 1.1 MiB | 00m00s [ 39/186] Installing npth-0:1.8-4.fc44. 100% | 49.4 MiB/s | 50.6 KiB | 00m00s [ 40/186] Installing libblkid-0:2.41.3- 100% | 269.0 MiB/s | 275.4 KiB | 00m00s [ 41/186] Installing libxcrypt-0:4.5.2- 100% | 144.5 MiB/s | 295.9 KiB | 00m00s [ 42/186] Installing libsepol-0:3.10-1. 100% | 283.5 MiB/s | 871.0 KiB | 00m00s [ 43/186] Installing sqlite-libs-0:3.51 100% | 318.1 MiB/s | 1.6 MiB | 00m00s [ 44/186] Installing gnupg2-gpgconf-0:2 100% | 17.6 MiB/s | 251.8 KiB | 00m00s [ 45/186] Installing libattr-0:2.5.2-8. 100% | 0.0 B/s | 25.2 KiB | 00m00s [ 46/186] Installing libacl-0:2.3.2-6.f 100% | 0.0 B/s | 36.6 KiB | 00m00s [ 47/186] Installing pcre2-0:10.47-1.fc 100% | 351.6 MiB/s | 720.0 KiB | 00m00s [ 48/186] Installing libselinux-0:3.10- 100% | 197.5 MiB/s | 202.3 KiB | 00m00s [ 49/186] Installing grep-0:3.12-3.fc44 100% | 55.7 MiB/s | 1.0 MiB | 00m00s [ 50/186] Installing sed-0:4.9-8.fc45.x 100% | 49.7 MiB/s | 865.4 KiB | 00m00s [ 51/186] Installing findutils-1:4.10.0 100% | 93.5 MiB/s | 1.9 MiB | 00m00s [ 52/186] Installing libtasn1-0:4.20.0- 100% | 177.7 MiB/s | 182.0 KiB | 00m00s [ 53/186] Installing libunistring-0:1.1 100% | 289.1 MiB/s | 1.7 MiB | 00m00s [ 54/186] Installing libidn2-0:2.3.8-3. 100% | 54.9 MiB/s | 562.6 KiB | 00m00s [ 55/186] Installing crypto-policies-0: 100% | 22.0 MiB/s | 157.7 KiB | 00m00s [ 56/186] Installing xz-1:5.8.2-2.fc44. 100% | 65.2 MiB/s | 1.4 MiB | 00m00s [ 57/186] Installing libmount-0:2.41.3- 100% | 190.3 MiB/s | 389.7 KiB | 00m00s [ 58/186] Installing gnupg2-verify-0:2. 100% | 27.2 MiB/s | 361.7 KiB | 00m00s [ 59/186] Installing dwz-0:0.16-3.fc44. 100% | 23.8 MiB/s | 292.3 KiB | 00m00s [ 60/186] Installing mpfr-0:4.2.2-3.fc4 100% | 207.7 MiB/s | 850.8 KiB | 00m00s [ 61/186] Installing gawk-0:5.4.0-1.fc4 100% | 111.7 MiB/s | 2.2 MiB | 00m00s [ 62/186] Installing libksba-0:1.6.8-1. 100% | 207.2 MiB/s | 424.4 KiB | 00m00s [ 63/186] Installing unzip-0:6.0-69.fc4 100% | 31.3 MiB/s | 449.3 KiB | 00m00s [ 64/186] Installing file-libs-0:5.46-9 100% | 564.8 MiB/s | 11.9 MiB | 00m00s [ 65/186] Installing file-0:5.46-9.fc44 100% | 7.6 MiB/s | 101.6 KiB | 00m00s [ 66/186] Installing diffutils-0:3.12-5 100% | 87.4 MiB/s | 1.6 MiB | 00m00s [ 67/186] Installing libeconf-0:0.7.9-3 100% | 64.9 MiB/s | 66.4 KiB | 00m00s [ 68/186] Installing libcap-ng-0:0.9.1- 100% | 68.9 MiB/s | 70.6 KiB | 00m00s [ 69/186] Installing audit-libs-0:4.1.3 100% | 191.9 MiB/s | 393.1 KiB | 00m00s [ 70/186] Installing pam-libs-0:1.7.2-1 100% | 129.8 MiB/s | 132.9 KiB | 00m00s [ 71/186] Installing libcap-0:2.77-2.fc 100% | 16.3 MiB/s | 217.2 KiB | 00m00s [ 72/186] Installing libsemanage-0:3.10 100% | 153.4 MiB/s | 314.1 KiB | 00m00s [ 73/186] Installing libsmartcols-0:2.4 100% | 184.9 MiB/s | 189.3 KiB | 00m00s [ 74/186] Installing lua-libs-0:5.5.0-1 100% | 146.2 MiB/s | 299.4 KiB | 00m00s [ 75/186] Installing json-c-0:0.18-8.fc 100% | 81.9 MiB/s | 83.9 KiB | 00m00s [ 76/186] Installing libffi-0:3.5.2-2.f 100% | 87.0 MiB/s | 89.1 KiB | 00m00s [ 77/186] Installing p11-kit-0:0.26.2-1 100% | 112.8 MiB/s | 2.6 MiB | 00m00s [ 78/186] Installing alternatives-0:1.3 100% | 5.2 MiB/s | 63.6 KiB | 00m00s [ 79/186] Installing p11-kit-trust-0:0. 100% | 23.4 MiB/s | 480.0 KiB | 00m00s [ 80/186] Installing ngtcp2-0:1.19.0-2. 100% | 162.0 MiB/s | 331.7 KiB | 00m00s [ 81/186] Installing openssl-libs-1:3.5 100% | 340.3 MiB/s | 9.2 MiB | 00m00s [ 82/186] Installing coreutils-0:9.10-2 100% | 149.8 MiB/s | 5.7 MiB | 00m00s [ 83/186] Installing ca-certificates-0: 100% | 1.7 MiB/s | 2.5 MiB | 00m01s [ 84/186] Installing gzip-0:1.14-2.fc44 100% | 26.5 MiB/s | 407.1 KiB | 00m00s [ 85/186] Installing rpm-sequoia-0:1.10 100% | 295.6 MiB/s | 2.4 MiB | 00m00s [ 86/186] Installing libfsverity-0:1.6- 100% | 28.7 MiB/s | 29.4 KiB | 00m00s [ 87/186] Installing libevent-0:2.1.12- 100% | 239.9 MiB/s | 982.4 KiB | 00m00s [ 88/186] Installing ngtcp2-crypto-ossl 100% | 51.2 MiB/s | 52.5 KiB | 00m00s [ 89/186] Installing util-linux-core-0: 100% | 74.1 MiB/s | 1.5 MiB | 00m00s [ 90/186] Installing zip-0:3.0-45.fc44. 100% | 49.0 MiB/s | 701.9 KiB | 00m00s [ 91/186] Installing gnupg2-keyboxd-0:2 100% | 28.2 MiB/s | 202.5 KiB | 00m00s [ 92/186] Installing libpsl-0:0.21.5-7. 100% | 75.6 MiB/s | 77.4 KiB | 00m00s [ 93/186] Installing tar-2:1.35-8.fc44. 100% | 129.5 MiB/s | 3.0 MiB | 00m00s [ 94/186] Installing linkdupes-0:0.7.2- 100% | 51.5 MiB/s | 790.7 KiB | 00m00s [ 95/186] Installing libselinux-utils-0 100% | 19.5 MiB/s | 320.1 KiB | 00m00s [ 96/186] Installing liblastlog2-0:2.41 100% | 4.3 MiB/s | 39.8 KiB | 00m00s [ 97/186] Installing systemd-standalone 100% | 18.7 MiB/s | 306.2 KiB | 00m00s [ 98/186] Installing rpm-libs-0:6.0.1-5 100% | 235.0 MiB/s | 962.8 KiB | 00m00s [ 99/186] Installing libfdisk-0:2.41.3- 100% | 126.8 MiB/s | 389.4 KiB | 00m00s [100/186] Installing util-linux-0:2.41. 100% | 79.6 MiB/s | 3.6 MiB | 00m00s [101/186] Installing policycoreutils-0: 100% | 27.9 MiB/s | 912.8 KiB | 00m00s [102/186] Installing selinux-policy-0:4 100% | 1.1 MiB/s | 33.6 KiB | 00m00s [103/186] Installing selinux-policy-tar 100% | 126.6 MiB/s | 14.8 MiB | 00m00s [104/186] Installing zstd-0:1.5.7-5.fc4 100% | 30.9 MiB/s | 506.0 KiB | 00m00s [105/186] Installing libusb1-0:1.0.29-5 100% | 15.7 MiB/s | 176.9 KiB | 00m00s >>> Running sysusers scriptlet: tpm2-tss-0:4.1.3-9.fc44.x86_64 >>> Finished sysusers scriptlet: tpm2-tss-0:4.1.3-9.fc44.x86_64 >>> Scriptlet output: >>> Creating group 'tss' with GID 59. >>> Creating user 'tss' (Account used for TPM access) with UID 59 and GID 59. >>> [106/186] Installing tpm2-tss-0:4.1.3-9 100% | 204.1 MiB/s | 1.6 MiB | 00m00s [107/186] Installing ima-evm-utils-libs 100% | 60.4 MiB/s | 61.9 KiB | 00m00s [108/186] Installing gnupg2-gpg-agent-0 100% | 27.9 MiB/s | 686.5 KiB | 00m00s [109/186] Installing libxml2-0:2.12.10- 100% | 93.2 MiB/s | 1.8 MiB | 00m00s [110/186] Installing nettle-0:3.10.1-3. 100% | 259.6 MiB/s | 797.4 KiB | 00m00s [111/186] Installing gnutls-0:3.8.12-1. 100% | 287.4 MiB/s | 3.7 MiB | 00m00s [112/186] Installing bzip2-0:1.0.8-23.f 100% | 6.9 MiB/s | 99.5 KiB | 00m00s [113/186] Installing add-determinism-0: 100% | 109.5 MiB/s | 2.2 MiB | 00m00s [114/186] Installing build-reproducibil 100% | 757.8 KiB/s | 1.5 KiB | 00m00s [115/186] Installing cpio-0:2.15-9.fc44 100% | 64.9 MiB/s | 1.1 MiB | 00m00s [116/186] Installing ed-0:1.22.5-2.fc45 100% | 11.4 MiB/s | 152.0 KiB | 00m00s [117/186] Installing patch-0:2.8-4.fc44 100% | 17.1 MiB/s | 228.1 KiB | 00m00s [118/186] Installing lz4-libs-0:1.10.0- 100% | 154.6 MiB/s | 158.4 KiB | 00m00s [119/186] Installing libarchive-0:3.8.4 100% | 242.5 MiB/s | 993.1 KiB | 00m00s [120/186] Installing libgomp-0:16.0.1-0 100% | 280.2 MiB/s | 573.9 KiB | 00m00s [121/186] Installing libtool-ltdl-0:2.5 100% | 69.5 MiB/s | 71.1 KiB | 00m00s [122/186] Installing gdbm-libs-1:1.23-1 100% | 128.3 MiB/s | 131.3 KiB | 00m00s [123/186] Installing cyrus-sasl-lib-0:2 100% | 115.5 MiB/s | 2.3 MiB | 00m00s [124/186] Installing openldap-0:2.6.10- 100% | 218.5 MiB/s | 671.3 KiB | 00m00s [125/186] Installing gnupg2-dirmngr-0:2 100% | 27.0 MiB/s | 636.6 KiB | 00m00s [126/186] Installing gnupg2-0:2.4.9-5.f 100% | 197.2 MiB/s | 6.5 MiB | 00m00s [127/186] Installing rpm-sign-libs-0:6. 100% | 39.4 MiB/s | 40.3 KiB | 00m00s [128/186] Installing gpgverify-0:2.2-4. 100% | 0.0 B/s | 9.4 KiB | 00m00s [129/186] Installing jansson-0:2.14-4.f 100% | 88.2 MiB/s | 90.3 KiB | 00m00s [130/186] Installing libpkgconf-0:2.5.1 100% | 89.1 MiB/s | 91.3 KiB | 00m00s [131/186] Installing pkgconf-0:2.5.1-1. 100% | 7.2 MiB/s | 95.2 KiB | 00m00s [132/186] Installing pkgconf-pkg-config 100% | 147.8 KiB/s | 1.8 KiB | 00m00s [133/186] Installing xxhash-libs-0:0.8. 100% | 93.2 MiB/s | 95.4 KiB | 00m00s [134/186] Installing libbrotli-0:1.2.0- 100% | 211.7 MiB/s | 867.3 KiB | 00m00s [135/186] Installing libnghttp2-0:1.68. 100% | 163.3 MiB/s | 167.3 KiB | 00m00s [136/186] Installing libnghttp3-0:1.15. 100% | 156.8 MiB/s | 160.6 KiB | 00m00s [137/186] Installing keyutils-libs-0:1. 100% | 54.3 MiB/s | 55.6 KiB | 00m00s [138/186] Installing libcom_err-0:1.47. 100% | 62.6 MiB/s | 64.1 KiB | 00m00s [139/186] Installing libverto-0:0.3.2-1 100% | 26.4 MiB/s | 27.1 KiB | 00m00s [140/186] Installing krb5-libs-0:1.22.2 100% | 239.9 MiB/s | 2.4 MiB | 00m00s [141/186] Installing libcbor-0:0.13.0-2 100% | 79.0 MiB/s | 80.9 KiB | 00m00s [142/186] Installing libfido2-0:1.16.0- 100% | 242.1 MiB/s | 247.9 KiB | 00m00s [143/186] Installing libssh-0:0.12.0-1. 100% | 234.8 MiB/s | 721.2 KiB | 00m00s [144/186] Installing libcurl-0:8.19.0~r 100% | 249.5 MiB/s | 1.0 MiB | 00m00s [145/186] Installing curl-0:8.19.0~rc2- 100% | 18.1 MiB/s | 482.0 KiB | 00m00s [146/186] Installing rpm-0:6.0.1-5.fc45 100% | 63.8 MiB/s | 2.6 MiB | 00m00s [147/186] Installing cmake-srpm-macros- 100% | 0.0 B/s | 804.0 B | 00m00s [148/186] Installing efi-srpm-macros-0: 100% | 40.2 MiB/s | 41.2 KiB | 00m00s [149/186] Installing java-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [150/186] Installing lua-srpm-macros-0: 100% | 0.0 B/s | 1.9 KiB | 00m00s [151/186] Installing tree-sitter-srpm-m 100% | 0.0 B/s | 9.3 KiB | 00m00s [152/186] Installing zig-srpm-macros-0: 100% | 0.0 B/s | 1.9 KiB | 00m00s [153/186] Installing filesystem-srpm-ma 100% | 0.0 B/s | 38.9 KiB | 00m00s [154/186] Installing elfutils-default-y 100% | 291.9 KiB/s | 2.0 KiB | 00m00s [155/186] Installing elfutils-libs-0:0. 100% | 233.4 MiB/s | 717.0 KiB | 00m00s [156/186] Installing elfutils-debuginfo 100% | 5.6 MiB/s | 86.0 KiB | 00m00s [157/186] Installing elfutils-0:0.194-3 100% | 134.5 MiB/s | 3.0 MiB | 00m00s [158/186] Installing binutils-0:2.46-1. 100% | 278.3 MiB/s | 27.3 MiB | 00m00s [159/186] Installing gdb-minimal-0:17.1 100% | 262.8 MiB/s | 14.2 MiB | 00m00s [160/186] Installing debugedit-0:5.2-6. 100% | 15.5 MiB/s | 221.6 KiB | 00m00s [161/186] Installing rpm-build-libs-0:6 100% | 270.7 MiB/s | 277.2 KiB | 00m00s [162/186] Installing rust-srpm-macros-0 100% | 0.0 B/s | 6.4 KiB | 00m00s [163/186] Installing qt6-srpm-macros-0: 100% | 0.0 B/s | 748.0 B | 00m00s [164/186] Installing qt5-srpm-macros-0: 100% | 0.0 B/s | 776.0 B | 00m00s [165/186] Installing perl-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [166/186] Installing package-notes-srpm 100% | 0.0 B/s | 2.1 KiB | 00m00s [167/186] Installing openblas-srpm-macr 100% | 0.0 B/s | 392.0 B | 00m00s [168/186] Installing ocaml-srpm-macros- 100% | 0.0 B/s | 2.1 KiB | 00m00s [169/186] Installing kernel-srpm-macros 100% | 0.0 B/s | 2.3 KiB | 00m00s [170/186] Installing gnat-srpm-macros-0 100% | 0.0 B/s | 1.3 KiB | 00m00s [171/186] Installing ghc-srpm-macros-0: 100% | 0.0 B/s | 1.0 KiB | 00m00s [172/186] Installing gap-srpm-macros-0: 100% | 0.0 B/s | 2.7 KiB | 00m00s [173/186] Installing fpc-srpm-macros-0: 100% | 0.0 B/s | 420.0 B | 00m00s [174/186] Installing ansible-srpm-macro 100% | 7.1 MiB/s | 36.2 KiB | 00m00s [175/186] Installing redhat-rpm-config- 100% | 92.7 MiB/s | 189.9 KiB | 00m00s [176/186] Installing forge-srpm-macros- 100% | 39.3 MiB/s | 40.3 KiB | 00m00s [177/186] Installing fonts-srpm-macros- 100% | 55.7 MiB/s | 57.0 KiB | 00m00s [178/186] Installing go-srpm-macros-0:3 100% | 61.6 MiB/s | 63.0 KiB | 00m00s [179/186] Installing rpm-build-0:6.0.1- 100% | 18.5 MiB/s | 303.7 KiB | 00m00s [180/186] Installing pyproject-srpm-mac 100% | 0.0 B/s | 2.5 KiB | 00m00s [181/186] Installing R-srpm-macros-0:1. 100% | 0.0 B/s | 4.4 KiB | 00m00s [182/186] Installing python-srpm-macros 100% | 51.7 MiB/s | 52.9 KiB | 00m00s [183/186] Installing rpm-plugin-selinux 100% | 0.0 B/s | 12.9 KiB | 00m00s [184/186] Installing which-0:2.23-4.fc4 100% | 6.0 MiB/s | 85.6 KiB | 00m00s [185/186] Installing shadow-utils-2:4.1 100% | 111.7 MiB/s | 4.0 MiB | 00m00s [186/186] Installing info-0:7.2-9.fc45. 100% | 44.5 KiB/s | 366.0 KiB | 00m08s Complete! Finish: installing minimal buildroot with dnf5 Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: R-srpm-macros-1.3.5-1.fc45.noarch add-determinism-0.7.2-4.fc45.x86_64 alternatives-1.33-5.fc44.x86_64 ansible-srpm-macros-1-20.1.fc44.noarch audit-libs-4.1.3-1.fc44.x86_64 bash-5.3.9-3.fc44.x86_64 binutils-2.46-1.fc45.x86_64 build-reproducibility-srpm-macros-0.7.2-4.fc45.noarch bzip2-1.0.8-23.fc44.x86_64 bzip2-libs-1.0.8-23.fc44.x86_64 ca-certificates-2025.2.80_v9.0.304-5.fc44.noarch cmake-srpm-macros-4.2.3-2.fc45.noarch coreutils-9.10-2.fc45.x86_64 coreutils-common-9.10-2.fc45.x86_64 cpio-2.15-9.fc44.x86_64 crypto-policies-20251128-3.git19878fe.fc44.noarch curl-8.19.0~rc2-1.fc45.x86_64 cyrus-sasl-lib-2.1.28-35.fc44.x86_64 debugedit-5.2-6.fc44.x86_64 diffutils-3.12-5.fc44.x86_64 dwz-0.16-3.fc44.x86_64 ed-1.22.5-2.fc45.x86_64 efi-srpm-macros-6-6.fc44.noarch elfutils-0.194-3.fc44.x86_64 elfutils-debuginfod-client-0.194-3.fc44.x86_64 elfutils-default-yama-scope-0.194-3.fc44.noarch elfutils-libelf-0.194-3.fc44.x86_64 elfutils-libs-0.194-3.fc44.x86_64 fedora-gpg-keys-45-0.1.noarch fedora-release-45-0.1.noarch fedora-release-common-45-0.1.noarch fedora-release-identity-basic-45-0.1.noarch fedora-repos-45-0.1.noarch fedora-repos-rawhide-45-0.1.noarch file-5.46-9.fc44.x86_64 file-libs-5.46-9.fc44.x86_64 filesystem-3.18-52.fc44.x86_64 filesystem-srpm-macros-3.18-52.fc44.noarch findutils-4.10.0-7.fc44.x86_64 fonts-srpm-macros-5.0.0-3.fc45.noarch forge-srpm-macros-0.4.0-4.fc44.noarch fpc-srpm-macros-1.3-16.fc44.noarch gap-srpm-macros-2-2.fc44.noarch gawk-5.4.0-1.fc45.x86_64 gdb-minimal-17.1-4.fc45.x86_64 gdbm-libs-1.23-11.fc44.x86_64 ghc-srpm-macros-1.10-1.fc44.noarch glibc-2.43.9000-2.fc45.x86_64 glibc-common-2.43.9000-2.fc45.x86_64 glibc-gconv-extra-2.43.9000-2.fc45.x86_64 glibc-minimal-langpack-2.43.9000-2.fc45.x86_64 gmp-6.3.0-5.fc44.x86_64 gnat-srpm-macros-7-2.fc44.noarch gnulib-l10n-20241231-2.fc44.noarch gnupg2-2.4.9-5.fc44.x86_64 gnupg2-dirmngr-2.4.9-5.fc44.x86_64 gnupg2-gpg-agent-2.4.9-5.fc44.x86_64 gnupg2-gpgconf-2.4.9-5.fc44.x86_64 gnupg2-keyboxd-2.4.9-5.fc44.x86_64 gnupg2-verify-2.4.9-5.fc44.x86_64 gnutls-3.8.12-1.fc45.x86_64 go-srpm-macros-3.8.0-2.fc44.noarch gpg-pubkey-36f612dcf27f7d1a48a835e4dbfcf71c6d9f90a6-6786af3b gpg-pubkey-4f50a6114cd5c6976a7f1179655a4b02f577861e-6888bc98 gpg-pubkey-d924b10d3e810dabdd8b56b596e7e91491211fce-697c9899 gpgverify-2.2-4.fc44.noarch grep-3.12-3.fc44.x86_64 gzip-1.14-2.fc44.x86_64 ima-evm-utils-libs-1.6.2-8.fc44.x86_64 info-7.2-9.fc45.x86_64 jansson-2.14-4.fc44.x86_64 java-srpm-macros-1-8.fc44.noarch json-c-0.18-8.fc44.x86_64 kernel-srpm-macros-1.0-28.fc44.noarch keyutils-libs-1.6.3-7.fc44.x86_64 krb5-libs-1.22.2-2.fc45.x86_64 libacl-2.3.2-6.fc44.x86_64 libarchive-3.8.4-2.fc44.x86_64 libassuan-2.5.7-5.fc44.x86_64 libattr-2.5.2-8.fc44.x86_64 libblkid-2.41.3-12.fc44.x86_64 libbrotli-1.2.0-3.fc44.x86_64 libcap-2.77-2.fc44.x86_64 libcap-ng-0.9.1-1.fc45.x86_64 libcbor-0.13.0-2.fc44.x86_64 libcom_err-1.47.3-4.fc44.x86_64 libcurl-8.19.0~rc2-1.fc45.x86_64 libeconf-0.7.9-3.fc44.x86_64 libevent-2.1.12-17.fc44.x86_64 libfdisk-2.41.3-12.fc44.x86_64 libffi-3.5.2-2.fc44.x86_64 libfido2-1.16.0-5.fc44.x86_64 libfsverity-1.6-4.fc44.x86_64 libgcc-16.0.1-0.7.fc45.x86_64 libgcrypt-1.12.1-1.fc45.x86_64 libgomp-16.0.1-0.7.fc45.x86_64 libgpg-error-1.59-1.fc45.x86_64 libidn2-2.3.8-3.fc44.x86_64 libksba-1.6.8-1.fc45.x86_64 liblastlog2-2.41.3-12.fc44.x86_64 libmount-2.41.3-12.fc44.x86_64 libnghttp2-1.68.0-3.fc44.x86_64 libnghttp3-1.15.0-1.fc44.x86_64 libpkgconf-2.5.1-1.fc45.x86_64 libpsl-0.21.5-7.fc44.x86_64 libselinux-3.10-1.fc44.x86_64 libselinux-utils-3.10-1.fc44.x86_64 libsemanage-3.10-1.fc44.x86_64 libsepol-3.10-1.fc44.x86_64 libsmartcols-2.41.3-12.fc44.x86_64 libssh-0.12.0-1.fc45.x86_64 libssh-config-0.12.0-1.fc45.noarch libstdc++-16.0.1-0.7.fc45.x86_64 libtasn1-4.20.0-3.fc44.x86_64 libtool-ltdl-2.5.4-10.fc44.x86_64 libunistring-1.1-11.fc44.x86_64 libusb1-1.0.29-5.fc44.x86_64 libuuid-2.41.3-12.fc44.x86_64 libverto-0.3.2-12.fc44.x86_64 libxcrypt-4.5.2-3.fc44.x86_64 libxml2-2.12.10-6.fc44.x86_64 libzstd-1.5.7-5.fc44.x86_64 linkdupes-0.7.2-4.fc45.x86_64 lua-libs-5.5.0-1.fc45.x86_64 lua-srpm-macros-1-17.fc44.noarch lz4-libs-1.10.0-4.fc44.x86_64 mpfr-4.2.2-3.fc44.x86_64 ncurses-base-6.6-1.fc44.noarch ncurses-libs-6.6-1.fc44.x86_64 nettle-3.10.1-3.fc44.x86_64 ngtcp2-1.19.0-2.fc44.x86_64 ngtcp2-crypto-ossl-1.19.0-2.fc44.x86_64 npth-1.8-4.fc44.x86_64 ocaml-srpm-macros-11-3.fc44.noarch openblas-srpm-macros-2-21.fc44.noarch openldap-2.6.10-7.fc44.x86_64 openssl-libs-3.5.5-1.fc44.x86_64 p11-kit-0.26.2-1.fc45.x86_64 p11-kit-trust-0.26.2-1.fc45.x86_64 package-notes-srpm-macros-0.17-3.fc45.noarch pam-libs-1.7.2-1.fc44.x86_64 patch-2.8-4.fc44.x86_64 pcre2-10.47-1.fc44.1.x86_64 pcre2-syntax-10.47-1.fc44.1.noarch perl-srpm-macros-1-61.fc44.noarch pkgconf-2.5.1-1.fc45.x86_64 pkgconf-m4-2.5.1-1.fc45.noarch pkgconf-pkg-config-2.5.1-1.fc45.x86_64 policycoreutils-3.10-2.fc45.x86_64 popt-1.19-10.fc44.x86_64 publicsuffix-list-dafsa-20260116-1.fc44.noarch pyproject-srpm-macros-1.18.6-2.fc44.noarch python-srpm-macros-3.14-10.fc44.noarch qt5-srpm-macros-5.15.18-2.fc44.noarch qt6-srpm-macros-6.10.2-1.fc45.noarch readline-8.3-4.fc44.x86_64 redhat-rpm-config-343-20.fc45.noarch rpm-6.0.1-5.fc45.x86_64 rpm-build-6.0.1-5.fc45.x86_64 rpm-build-libs-6.0.1-5.fc45.x86_64 rpm-libs-6.0.1-5.fc45.x86_64 rpm-plugin-selinux-6.0.1-5.fc45.x86_64 rpm-sequoia-1.10.1-1.fc45.x86_64 rpm-sign-libs-6.0.1-5.fc45.x86_64 rust-srpm-macros-28.4-3.fc44.noarch sed-4.9-8.fc45.x86_64 selinux-policy-42.24-1.fc45.noarch selinux-policy-targeted-42.24-1.fc45.noarch setup-2.15.0-28.fc44.noarch shadow-utils-4.19.3-1.fc45.x86_64 sqlite-libs-3.51.2-1.fc44.x86_64 systemd-libs-259.1-1.fc45.x86_64 systemd-standalone-sysusers-259.1-1.fc45.x86_64 tar-1.35-8.fc44.x86_64 tpm2-tss-4.1.3-9.fc44.x86_64 tree-sitter-srpm-macros-0.4.2-2.fc44.noarch unzip-6.0-69.fc44.x86_64 util-linux-2.41.3-12.fc44.x86_64 util-linux-core-2.41.3-12.fc44.x86_64 which-2.23-4.fc44.x86_64 xxhash-libs-0.8.3-4.fc44.x86_64 xz-5.8.2-2.fc44.x86_64 xz-libs-5.8.2-2.fc44.x86_64 zig-srpm-macros-1-8.fc44.noarch zip-3.0-45.fc44.x86_64 zlib-ng-compat-2.3.3-5.fc45.x86_64 zstd-1.5.7-5.fc44.x86_64 Start: buildsrpm Start: rpmbuild -bs Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.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-1772025190.540876/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-pdw38je1/python-pydocket/python-pydocket.spec) Config(child) 0 minutes 32 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-pydocket-0.17.9-1.fc45.src.rpm) Config(fedora-rawhide-x86_64) Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1772025190.540876/root. INFO: reusing tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1772025190.540876/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start(bootstrap): cleaning package manager metadata Finish(bootstrap): cleaning package manager metadata Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-1772025190.540876/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 downloaded with a bootstrap image: rpm-6.0.1-5.fc45.x86_64 rpm-sequoia-1.10.1-1.fc45.x86_64 dnf5-5.4.0.0-2.fc45.x86_64 dnf5-plugins-5.4.0.0-2.fc45.x86_64 Finish: chroot init Start: build phase for python-pydocket-0.17.9-1.fc45.src.rpm Start: build setup for python-pydocket-0.17.9-1.fc45.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.src.rpm Updating and loading repositories: fedora 100% | 172.0 KiB/s | 40.3 KiB | 00m00s Copr repository 100% | 7.1 KiB/s | 1.5 KiB | 00m00s Additional repo copr_r0x0d_python_fake 100% | 7.1 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing: python3-devel x86_64 0:3.14.3-1.fc45 fedora 1.9 MiB python3-docker noarch 0:7.1.0-10.fc44 fedora 1.1 MiB python3-fakeredis noarch 0:2.34.0-1.fc45 copr_r0x0d_python_fakeredis 1.2 MiB python3-pytest noarch 0:8.4.2-2.fc44 fedora 22.5 MiB python3-pytest-asyncio noarch 0:1.1.0-3.fc44 fedora 131.1 KiB python3-pytest-xdist noarch 0:3.7.0-6.fc44 fedora 468.8 KiB tomcli noarch 0:0.10.1-4.fc44 fedora 150.3 KiB Installing dependencies: expat x86_64 0:2.7.3-2.fc44 fedora 316.8 KiB mpdecimal x86_64 0:4.0.1-3.fc44 fedora 217.1 KiB pyproject-rpm-macros noarch 0:1.18.6-2.fc44 fedora 115.6 KiB python-pip-wheel noarch 0:25.3-2.fc44 fedora 1.2 MiB python-rpm-macros noarch 0:3.14-10.fc44 fedora 27.6 KiB python3 x86_64 0:3.14.3-1.fc45 fedora 28.7 KiB python3-charset-normalizer noarch 0:3.4.4-2.fc44 fedora 356.2 KiB python3-click noarch 1:8.1.7-12.fc44 fedora 1.2 MiB python3-execnet noarch 0:2.1.2-2.fc44 fedora 970.6 KiB python3-idna noarch 0:3.11-2.fc44 fedora 738.4 KiB python3-iniconfig noarch 0:2.3.0-2.fc44 fedora 49.8 KiB python3-libs x86_64 0:3.14.3-1.fc45 fedora 43.7 MiB python3-packaging noarch 0:26.0-1.fc45 fedora 732.3 KiB python3-pluggy noarch 0:1.6.0-5.fc44 fedora 211.5 KiB python3-pygments noarch 0:2.19.1-9.fc44 fedora 11.3 MiB python3-redis noarch 0:5.2.1-8.fc44 fedora 2.5 MiB python3-requests noarch 0:2.32.5-3.fc44 fedora 476.9 KiB python3-rpm-generators noarch 0:14-14.fc44 fedora 81.7 KiB python3-rpm-macros noarch 0:3.14-10.fc44 fedora 6.5 KiB python3-sortedcontainers noarch 0:2.4.0-26.fc44 fedora 392.9 KiB python3-tomlkit noarch 0:0.13.2-7.fc44 fedora 493.9 KiB python3-urllib3 noarch 0:2.6.3-2.fc44 fedora 1.1 MiB tomcli+tomlkit noarch 0:0.10.1-4.fc44 fedora 0.0 B tzdata noarch 0:2025c-2.fc44 fedora 1.2 MiB Transaction Summary: Installing: 31 packages Total size of inbound packages is 21 MiB. Need to download 21 MiB. After this operation, 95 MiB extra will be used (install 95 MiB, remove 0 B). [ 1/31] python3-docker-0:7.1.0-10.fc44. 100% | 14.5 MiB/s | 297.3 KiB | 00m00s [ 2/31] python3-pytest-asyncio-0:1.1.0- 100% | 2.0 MiB/s | 41.3 KiB | 00m00s [ 3/31] python3-pytest-xdist-0:3.7.0-6. 100% | 28.7 MiB/s | 117.5 KiB | 00m00s [ 4/31] tomcli-0:0.10.1-4.fc44.noarch 100% | 14.6 MiB/s | 75.0 KiB | 00m00s [ 5/31] python3-devel-0:3.14.3-1.fc45.x 100% | 106.7 MiB/s | 437.2 KiB | 00m00s [ 6/31] python3-requests-0:2.32.5-3.fc4 100% | 78.2 MiB/s | 160.1 KiB | 00m00s [ 7/31] python3-urllib3-0:2.6.3-2.fc44. 100% | 147.4 MiB/s | 301.9 KiB | 00m00s [ 8/31] python3-iniconfig-0:2.3.0-2.fc4 100% | 8.6 MiB/s | 26.3 KiB | 00m00s [ 9/31] python3-pytest-0:8.4.2-2.fc44.n 100% | 57.9 MiB/s | 2.3 MiB | 00m00s [10/31] python3-packaging-0:26.0-1.fc45 100% | 90.6 MiB/s | 185.5 KiB | 00m00s [11/31] python3-pluggy-0:1.6.0-5.fc44.n 100% | 15.1 MiB/s | 61.7 KiB | 00m00s [12/31] python3-execnet-0:2.1.2-2.fc44. 100% | 37.4 MiB/s | 267.9 KiB | 00m00s [13/31] python3-click-1:8.1.7-12.fc44.n 100% | 124.2 MiB/s | 254.5 KiB | 00m00s [14/31] python3-pygments-0:2.19.1-9.fc4 100% | 98.9 MiB/s | 2.7 MiB | 00m00s [15/31] python3-redis-0:5.2.1-8.fc44.no 100% | 58.4 MiB/s | 597.5 KiB | 00m00s [16/31] python3-sortedcontainers-0:2.4. 100% | 15.6 MiB/s | 64.0 KiB | 00m00s [17/31] python3-charset-normalizer-0:3. 100% | 114.6 MiB/s | 117.3 KiB | 00m00s [18/31] python3-idna-0:3.11-2.fc44.noar 100% | 60.9 MiB/s | 124.7 KiB | 00m00s [19/31] expat-0:2.7.3-2.fc44.x86_64 100% | 40.6 MiB/s | 124.8 KiB | 00m00s [20/31] mpdecimal-0:4.0.1-3.fc44.x86_64 100% | 32.3 MiB/s | 99.1 KiB | 00m00s [21/31] python-pip-wheel-0:25.3-2.fc44. 100% | 102.9 MiB/s | 1.1 MiB | 00m00s [22/31] tzdata-0:2025c-2.fc44.noarch 100% | 139.5 MiB/s | 714.2 KiB | 00m00s [23/31] python3-0:3.14.3-1.fc45.x86_64 100% | 27.5 MiB/s | 28.2 KiB | 00m00s [24/31] python3-libs-0:3.14.3-1.fc45.x8 100% | 146.4 MiB/s | 10.1 MiB | 00m00s [25/31] tomcli+tomlkit-0:0.10.1-4.fc44. 100% | 838.0 KiB/s | 8.4 KiB | 00m00s [26/31] pyproject-rpm-macros-0:1.18.6-2 100% | 21.9 MiB/s | 44.8 KiB | 00m00s [27/31] python3-tomlkit-0:0.13.2-7.fc44 100% | 41.2 MiB/s | 126.7 KiB | 00m00s [28/31] python-rpm-macros-0:3.14-10.fc4 100% | 19.3 MiB/s | 19.8 KiB | 00m00s [29/31] python3-rpm-generators-0:14-14. 100% | 27.9 MiB/s | 28.6 KiB | 00m00s [30/31] python3-rpm-macros-0:3.14-10.fc 100% | 12.1 MiB/s | 12.3 KiB | 00m00s [31/31] python3-fakeredis-0:2.34.0-1.fc 100% | 477.8 KiB/s | 323.5 KiB | 00m01s -------------------------------------------------------------------------------- [31/31] Total 100% | 29.4 MiB/s | 20.8 MiB | 00m01s Running transaction [ 1/33] Verify package files 100% | 397.0 B/s | 31.0 B | 00m00s [ 2/33] Prepare transaction 100% | 516.0 B/s | 31.0 B | 00m00s [ 3/33] Installing python-rpm-macros-0: 100% | 27.8 MiB/s | 28.5 KiB | 00m00s [ 4/33] Installing python3-rpm-macros-0 100% | 0.0 B/s | 6.8 KiB | 00m00s [ 5/33] Installing pyproject-rpm-macros 100% | 23.0 MiB/s | 117.5 KiB | 00m00s [ 6/33] Installing tzdata-0:2025c-2.fc4 100% | 30.9 MiB/s | 1.5 MiB | 00m00s [ 7/33] Installing python-pip-wheel-0:2 100% | 401.4 MiB/s | 1.2 MiB | 00m00s [ 8/33] Installing mpdecimal-0:4.0.1-3. 100% | 213.5 MiB/s | 218.6 KiB | 00m00s [ 9/33] Installing expat-0:2.7.3-2.fc44 100% | 14.8 MiB/s | 318.9 KiB | 00m00s [10/33] Installing python3-libs-0:3.14. 100% | 265.8 MiB/s | 44.1 MiB | 00m00s [11/33] Installing python3-0:3.14.3-1.f 100% | 2.1 MiB/s | 30.5 KiB | 00m00s [12/33] Installing python3-packaging-0: 100% | 182.0 MiB/s | 745.4 KiB | 00m00s [13/33] Installing python3-idna-0:3.11- 100% | 242.5 MiB/s | 744.9 KiB | 00m00s [14/33] Installing python3-urllib3-0:2. 100% | 189.6 MiB/s | 1.1 MiB | 00m00s [15/33] Installing python3-rpm-generato 100% | 81.0 MiB/s | 82.9 KiB | 00m00s [16/33] Installing python3-iniconfig-0: 100% | 52.9 MiB/s | 54.1 KiB | 00m00s [17/33] Installing python3-pluggy-0:1.6 100% | 53.2 MiB/s | 217.9 KiB | 00m00s [18/33] Installing python3-pygments-0:2 100% | 171.5 MiB/s | 11.5 MiB | 00m00s [19/33] Installing python3-pytest-0:8.4 100% | 294.5 MiB/s | 22.7 MiB | 00m00s [20/33] Installing python3-execnet-0:2. 100% | 161.5 MiB/s | 992.2 KiB | 00m00s [21/33] Installing python3-click-1:8.1. 100% | 234.0 MiB/s | 1.2 MiB | 00m00s [22/33] Installing python3-redis-0:5.2. 100% | 215.4 MiB/s | 2.6 MiB | 00m00s [23/33] Installing python3-sortedcontai 100% | 194.0 MiB/s | 397.3 KiB | 00m00s [24/33] Installing python3-charset-norm 100% | 23.9 MiB/s | 366.4 KiB | 00m00s [25/33] Installing python3-requests-0:2 100% | 159.1 MiB/s | 488.9 KiB | 00m00s [26/33] Installing python3-tomlkit-0:0. 100% | 163.8 MiB/s | 503.2 KiB | 00m00s [27/33] Installing tomcli-0:0.10.1-4.fc 100% | 9.9 MiB/s | 162.9 KiB | 00m00s [28/33] Installing tomcli+tomlkit-0:0.1 100% | 121.1 KiB/s | 124.0 B | 00m00s [29/33] Installing python3-docker-0:7.1 100% | 123.7 MiB/s | 1.1 MiB | 00m00s [30/33] Installing python3-fakeredis-0: 100% | 157.6 MiB/s | 1.3 MiB | 00m00s [31/33] Installing python3-pytest-xdist 100% | 156.7 MiB/s | 481.3 KiB | 00m00s [32/33] Installing python3-pytest-async 100% | 44.0 MiB/s | 135.2 KiB | 00m00s [33/33] Installing python3-devel-0:3.14 100% | 37.0 MiB/s | 2.0 MiB | 00m00s Warning: skipped OpenPGP checks for 1 package from repository: copr_r0x0d_python_fakeredis Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.src.rpm Updating and loading repositories: fedora 100% | 134.2 KiB/s | 40.3 KiB | 00m00s Copr repository 100% | 5.4 KiB/s | 1.5 KiB | 00m00s Additional repo copr_r0x0d_python_fake 100% | 5.4 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package "python3-devel-3.14.3-1.fc45.x86_64" is already installed. Package "python3-docker-7.1.0-10.fc44.noarch" is already installed. Package "python3-fakeredis-2.34.0-1.fc45.noarch" is already installed. Package "python3-pytest-8.4.2-2.fc44.noarch" is already installed. Package "python3-pytest-asyncio-1.1.0-3.fc44.noarch" is already installed. Package "python3-pytest-xdist-3.7.0-6.fc44.noarch" is already installed. Package "tomcli-0.10.1-4.fc44.noarch" is already installed. Nothing to do. Finish: build setup for python-pydocket-0.17.9-1.fc45.src.rpm Start: rpmbuild python-pydocket-0.17.9-1.fc45.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.D2cO0I Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.oxhyiV + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + rm -rf pydocket-0.17.9 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/pydocket-0.17.9.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd pydocket-0.17.9 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/remove-pytest-unrecognized-arguments.diff + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + tomcli set pyproject.toml arrays replace project.dependencies 'croniter>=([0-9]+)' 'croniter>=5' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.sdctg3 + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + cd pydocket-0.17.9 + 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-pydocket-0.17.9-build/.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-pydocket-0.17.9-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=45 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir --output /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires Handling hatchling from build-system.requires Requirement not satisfied: hatchling Handling hatch-vcs from build-system.requires Requirement not satisfied: hatch-vcs Exiting dependency generation pass: build backend + cat /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 139.8 KiB/s | 40.3 KiB | 00m00s Copr repository 100% | 5.7 KiB/s | 1.5 KiB | 00m00s Additional repo copr_r0x0d_python_fake 100% | 5.7 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.6-2.fc44.noarch" is already installed. Package "python3-devel-3.14.3-1.fc45.x86_64" is already installed. Package "python3-docker-7.1.0-10.fc44.noarch" is already installed. Package "python3-fakeredis-2.34.0-1.fc45.noarch" is already installed. Package "python3-pytest-8.4.2-2.fc44.noarch" is already installed. Package "python3-pytest-asyncio-1.1.0-3.fc44.noarch" is already installed. Package "python3-pytest-xdist-3.7.0-6.fc44.noarch" is already installed. Package "python3-packaging-26.0-1.fc45.noarch" is already installed. Package "tomcli-0.10.1-4.fc44.noarch" is already installed. Package Arch Version Repository Size Installing: python3-hatch-vcs noarch 0:0.5.0-6.fc44 fedora 34.9 KiB python3-hatchling noarch 0:1.29.0-1.fc45 fedora 659.2 KiB python3-pip noarch 0:25.3-2.fc44 fedora 11.2 MiB Installing dependencies: python3-pathspec noarch 0:1.0.3-2.fc44 fedora 372.4 KiB python3-setuptools noarch 0:80.10.2-1.fc44 fedora 7.5 MiB python3-setuptools_scm noarch 0:9.2.2-5.fc44 fedora 502.5 KiB python3-trove-classifiers noarch 0:2026.1.14.14-2.fc44 fedora 111.9 KiB Transaction Summary: Installing: 7 packages Total size of inbound packages is 5 MiB. Need to download 5 MiB. After this operation, 20 MiB extra will be used (install 20 MiB, remove 0 B). [1/7] python3-hatch-vcs-0:0.5.0-6.fc44. 100% | 1.5 MiB/s | 27.9 KiB | 00m00s [2/7] python3-hatchling-0:1.29.0-1.fc45 100% | 11.2 MiB/s | 229.2 KiB | 00m00s [3/7] python3-setuptools_scm-0:9.2.2-5. 100% | 31.1 MiB/s | 159.4 KiB | 00m00s [4/7] python3-pathspec-0:1.0.3-2.fc44.n 100% | 17.5 MiB/s | 107.8 KiB | 00m00s [5/7] python3-trove-classifiers-0:2026. 100% | 5.6 MiB/s | 34.2 KiB | 00m00s [6/7] python3-pip-0:25.3-2.fc44.noarch 100% | 56.9 MiB/s | 2.6 MiB | 00m00s [7/7] python3-setuptools-0:80.10.2-1.fc 100% | 83.5 MiB/s | 1.8 MiB | 00m00s -------------------------------------------------------------------------------- [7/7] Total 100% | 94.6 MiB/s | 4.9 MiB | 00m00s Running transaction [1/9] Verify package files 100% | 368.0 B/s | 7.0 B | 00m00s [2/9] Prepare transaction 100% | 205.0 B/s | 7.0 B | 00m00s [3/9] Installing python3-setuptools-0:8 100% | 166.3 MiB/s | 7.7 MiB | 00m00s [4/9] Installing python3-setuptools_scm 100% | 27.1 MiB/s | 526.4 KiB | 00m00s [5/9] Installing python3-trove-classifi 100% | 8.1 MiB/s | 115.7 KiB | 00m00s [6/9] Installing python3-pathspec-0:1.0 100% | 64.2 MiB/s | 394.6 KiB | 00m00s [7/9] Installing python3-hatchling-0:1. 100% | 30.1 MiB/s | 708.4 KiB | 00m00s [8/9] Installing python3-hatch-vcs-0:0. 100% | 8.0 MiB/s | 41.0 KiB | 00m00s [9/9] Installing python3-pip-0:25.3-2.f 100% | 110.4 MiB/s | 11.5 MiB | 00m00s Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.YY6OAM + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + cd pydocket-0.17.9 + 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-pydocket-0.17.9-build/.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-pydocket-0.17.9-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=45 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir --output /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires Handling hatchling from build-system.requires Requirement satisfied: hatchling (installed: hatchling 1.29.0) Handling hatch-vcs from build-system.requires Requirement satisfied: hatch-vcs (installed: hatch-vcs 0.5.0) Handling cloudpickle>=3.1.1 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: cloudpickle>=3.1.1 Handling croniter>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: croniter>=5 Handling exceptiongroup>=1.2.0; python_version < '3.11' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: exceptiongroup>=1.2.0; python_version < '3.11' Handling fakeredis[lua]>=2.32.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: fakeredis[lua]>=2.32.1 (installed: fakeredis 2.34.0) (extras are currently not checked) Handling opentelemetry-api>=1.33.0 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: opentelemetry-api>=1.33.0 Handling prometheus-client>=0.21.1 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: prometheus-client>=0.21.1 Handling py-key-value-aio[memory,redis]>=0.3.0 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: py-key-value-aio[memory,redis]>=0.3.0 Handling python-json-logger>=2.0.7 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: python-json-logger>=2.0.7 Handling redis>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: redis>=5 (installed: redis 5.2.1) Handling rich>=13.9.4 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: rich>=13.9.4 Handling taskgroup>=0.2.2; python_version < '3.11' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: taskgroup>=0.2.2; python_version < '3.11' Handling typer>=0.15.1 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: typer>=0.15.1 Handling typing-extensions>=4.12.0 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: typing-extensions>=4.12.0 Handling tzdata>=2025.2; sys_platform == 'win32' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: tzdata>=2025.2; sys_platform == 'win32' Handling opentelemetry-sdk>=1.33.0; extra == 'metrics' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: opentelemetry-sdk>=1.33.0; extra == 'metrics' + cat /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires + rm -rfv pydocket-0.17.9.dist-info/ removed 'pydocket-0.17.9.dist-info/METADATA' removed directory 'pydocket-0.17.9.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 136.5 KiB/s | 40.3 KiB | 00m00s Copr repository 100% | 5.5 KiB/s | 1.5 KiB | 00m00s Additional repo copr_r0x0d_python_fake 100% | 5.6 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.6-2.fc44.noarch" is already installed. Package "python3-devel-3.14.3-1.fc45.x86_64" is already installed. Package "python3-docker-7.1.0-10.fc44.noarch" is already installed. Package Arch Version Repository Size Installing: python3-cloudpickle noarch 0:3.1.2-2.fc44 fedora 129.7 KiB python3-croniter noarch 0:5.0.1-7.fc45 fedora 200.0 KiB python3-fakeredis+lua noarch 0:2.34.0-1.fc45 copr_r0x0d_python_fakeredis 0.0 B python3-json-logger noarch 0:4.0.0-2.fc44 fedora 83.3 KiB python3-opentelemetry-api noarch 0:1.39.1-1.fc45 fedora 438.0 KiB python3-prometheus_client noarch 0:0.23.0-3.fc44 fedora 425.1 KiB python3-py-key-value-aio noarch 0:0.3.0-2.fc45 fedora 756.1 KiB python3-py-key-value-aio+memory noarch 0:0.3.0-2.fc45 fedora 0.0 B python3-py-key-value-aio+redis noarch 0:0.3.0-2.fc45 fedora 0.0 B python3-rich noarch 0:14.3.3-1.fc45 fedora 3.4 MiB python3-typer noarch 0:0.23.1-1.fc45 fedora 853.9 KiB python3-typing-extensions noarch 0:4.15.0-4.fc45 fedora 538.8 KiB Installing dependencies: luajit x86_64 0:2.1.1767980792-1.fc44 fedora 1.4 MiB python3-annotated-doc noarch 0:0.0.4-3.fc44 fedora 16.7 KiB python3-beartype noarch 0:0.21.0^20240712gita3a0fff-2.fc44 fedora 8.5 MiB python3-cachetools noarch 0:7.0.1-1.fc45 fedora 149.2 KiB python3-dateutil noarch 1:2.9.0.post0-7.fc44 fedora 878.0 KiB python3-decorator noarch 0:5.2.1-6.fc44 fedora 81.8 KiB python3-importlib-metadata noarch 0:8.7.1-2.fc44 fedora 180.4 KiB python3-lupa x86_64 0:2.6-3.fc44 fedora 473.4 KiB python3-markdown-it-py noarch 0:4.0.0-1.fc45 fedora 540.6 KiB python3-mdurl noarch 0:0.1.2-14.fc44 fedora 44.0 KiB python3-py-key-value-shared noarch 0:0.3.0-2.fc45 fedora 129.8 KiB python3-pytz noarch 0:2025.2-6.fc44 fedora 224.0 KiB python3-shellingham noarch 0:1.5.4-14.fc44 fedora 43.6 KiB python3-six noarch 0:1.17.0-8.fc44 fedora 118.0 KiB python3-zipp noarch 0:3.23.0-3.fc44 fedora 60.7 KiB Transaction Summary: Installing: 27 packages Package "python3-fakeredis-2.34.0-1.fc45.noarch" is already installed. Package "python3-pytest-8.4.2-2.fc44.noarch" is already installed. Package "python3-pytest-asyncio-1.1.0-3.fc44.noarch" is already installed. Package "python3-pytest-xdist-3.7.0-6.fc44.noarch" is already installed. Package "python3-fakeredis-2.34.0-1.fc45.noarch" is already installed. Package "python3-hatch-vcs-0.5.0-6.fc44.noarch" is already installed. Package "python3-hatchling-1.29.0-1.fc45.noarch" is already installed. Package "python3-packaging-26.0-1.fc45.noarch" is already installed. Package "python3-pip-25.3-2.fc44.noarch" is already installed. Package "python3-redis-5.2.1-8.fc44.noarch" is already installed. Package "tomcli-0.10.1-4.fc44.noarch" is already installed. Total size of inbound packages is 5 MiB. Need to download 5 MiB. After this operation, 20 MiB extra will be used (install 20 MiB, remove 0 B). [ 1/27] python3-cloudpickle-0:3.1.2-2.f 100% | 2.6 MiB/s | 48.2 KiB | 00m00s [ 2/27] python3-opentelemetry-api-0:1.3 100% | 7.0 MiB/s | 137.1 KiB | 00m00s [ 3/27] python3-croniter-0:5.0.1-7.fc45 100% | 2.2 MiB/s | 52.8 KiB | 00m00s [ 4/27] python3-py-key-value-aio-0:0.3. 100% | 48.4 MiB/s | 247.6 KiB | 00m00s [ 5/27] python3-prometheus_client-0:0.2 100% | 21.1 MiB/s | 151.1 KiB | 00m00s [ 6/27] python3-py-key-value-aio+memory 100% | 1.8 MiB/s | 7.5 KiB | 00m00s [ 7/27] python3-py-key-value-aio+redis- 100% | 2.4 MiB/s | 7.5 KiB | 00m00s [ 8/27] python3-json-logger-0:4.0.0-2.f 100% | 10.2 MiB/s | 41.6 KiB | 00m00s [ 9/27] python3-rich-0:14.3.3-1.fc45.no 100% | 108.1 MiB/s | 664.3 KiB | 00m00s [10/27] python3-typing-extensions-0:4.1 100% | 36.6 MiB/s | 112.3 KiB | 00m00s [11/27] python3-typer-0:0.23.1-1.fc45.n 100% | 28.3 MiB/s | 173.8 KiB | 00m00s [12/27] python3-dateutil-1:2.9.0.post0- 100% | 168.1 MiB/s | 344.4 KiB | 00m00s [13/27] python3-pytz-0:2025.2-6.fc44.no 100% | 16.2 MiB/s | 66.2 KiB | 00m00s [14/27] python3-decorator-0:5.2.1-6.fc4 100% | 31.3 MiB/s | 32.0 KiB | 00m00s [15/27] python3-importlib-metadata-0:8. 100% | 18.0 MiB/s | 73.7 KiB | 00m00s [16/27] python3-py-key-value-shared-0:0 100% | 21.8 MiB/s | 67.0 KiB | 00m00s [17/27] python3-cachetools-0:7.0.1-1.fc 100% | 13.2 MiB/s | 54.1 KiB | 00m00s [18/27] python3-markdown-it-py-0:4.0.0- 100% | 40.0 MiB/s | 205.0 KiB | 00m00s [19/27] python3-annotated-doc-0:0.0.4-3 100% | 3.7 MiB/s | 15.2 KiB | 00m00s [20/27] python3-beartype-0:0.21.0^20240 100% | 76.0 MiB/s | 1.6 MiB | 00m00s [21/27] python3-shellingham-0:1.5.4-14. 100% | 8.3 MiB/s | 34.1 KiB | 00m00s [22/27] python3-six-0:1.17.0-8.fc44.noa 100% | 41.0 MiB/s | 42.0 KiB | 00m00s [23/27] python3-lupa-0:2.6-3.fc44.x86_6 100% | 39.8 MiB/s | 163.0 KiB | 00m00s [24/27] python3-zipp-0:3.23.0-3.fc44.no 100% | 9.1 MiB/s | 37.3 KiB | 00m00s [25/27] python3-mdurl-0:0.1.2-14.fc44.n 100% | 7.7 MiB/s | 31.4 KiB | 00m00s [26/27] luajit-0:2.1.1767980792-1.fc44. 100% | 48.0 MiB/s | 442.5 KiB | 00m00s [27/27] python3-fakeredis+lua-0:2.34.0- 100% | 24.7 KiB/s | 7.2 KiB | 00m00s -------------------------------------------------------------------------------- [27/27] Total 100% | 14.5 MiB/s | 4.8 MiB | 00m00s Running transaction [ 1/29] Verify package files 100% | 1.3 KiB/s | 27.0 B | 00m00s [ 2/29] Prepare transaction 100% | 574.0 B/s | 27.0 B | 00m00s [ 3/29] Installing python3-beartype-0:0 100% | 133.0 MiB/s | 8.8 MiB | 00m00s [ 4/29] Installing python3-typing-exten 100% | 264.2 MiB/s | 541.1 KiB | 00m00s [ 5/29] Installing python3-py-key-value 100% | 35.8 MiB/s | 146.7 KiB | 00m00s [ 6/29] Installing python3-py-key-value 100% | 57.5 MiB/s | 823.7 KiB | 00m00s [ 7/29] Installing luajit-0:2.1.1767980 100% | 73.2 MiB/s | 1.4 MiB | 00m00s [ 8/29] Installing python3-lupa-0:2.6-3 100% | 155.4 MiB/s | 477.3 KiB | 00m00s [ 9/29] Installing python3-mdurl-0:0.1. 100% | 24.1 MiB/s | 49.4 KiB | 00m00s [10/29] Installing python3-markdown-it- 100% | 27.2 MiB/s | 584.7 KiB | 00m00s [11/29] Installing python3-rich-0:14.3. 100% | 231.9 MiB/s | 3.5 MiB | 00m00s [12/29] Installing python3-zipp-0:3.23. 100% | 32.7 MiB/s | 67.0 KiB | 00m00s [13/29] Installing python3-importlib-me 100% | 93.2 MiB/s | 190.8 KiB | 00m00s [14/29] Installing python3-six-0:1.17.0 100% | 117.5 MiB/s | 120.3 KiB | 00m00s [15/29] Installing python3-dateutil-1:2 100% | 174.1 MiB/s | 891.5 KiB | 00m00s [16/29] Installing python3-shellingham- 100% | 24.5 MiB/s | 50.2 KiB | 00m00s [17/29] Installing python3-annotated-do 100% | 19.7 MiB/s | 20.1 KiB | 00m00s [18/29] Installing python3-cachetools-0 100% | 75.3 MiB/s | 154.1 KiB | 00m00s [19/29] Installing python3-decorator-0: 100% | 82.5 MiB/s | 84.5 KiB | 00m00s [20/29] Installing python3-pytz-0:2025. 100% | 112.0 MiB/s | 229.4 KiB | 00m00s [21/29] Installing python3-croniter-0:5 100% | 99.3 MiB/s | 203.3 KiB | 00m00s [22/29] Installing python3-prometheus_c 100% | 108.2 MiB/s | 443.4 KiB | 00m00s [23/29] Installing python3-py-key-value 100% | 0.0 B/s | 124.0 B | 00m00s [24/29] Installing python3-typer-0:0.23 100% | 49.7 MiB/s | 865.9 KiB | 00m00s [25/29] Installing python3-opentelemetr 100% | 75.8 MiB/s | 465.9 KiB | 00m00s [26/29] Installing python3-fakeredis+lu 100% | 0.0 B/s | 124.0 B | 00m00s [27/29] Installing python3-py-key-value 100% | 0.0 B/s | 124.0 B | 00m00s [28/29] Installing python3-json-logger- 100% | 44.2 MiB/s | 90.5 KiB | 00m00s [29/29] Installing python3-cloudpickle- 100% | 5.4 MiB/s | 133.5 KiB | 00m00s Warning: skipped OpenPGP checks for 1 package from repository: copr_r0x0d_python_fakeredis Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.OJYpdt + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + cd pydocket-0.17.9 + 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-pydocket-0.17.9-build/.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-pydocket-0.17.9-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=45 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir --output /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires Handling hatchling from build-system.requires Requirement satisfied: hatchling (installed: hatchling 1.29.0) Handling hatch-vcs from build-system.requires Requirement satisfied: hatch-vcs (installed: hatch-vcs 0.5.0) Handling cloudpickle>=3.1.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: cloudpickle>=3.1.1 (installed: cloudpickle 3.1.2) Handling croniter>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: croniter>=5 (installed: croniter 5.0.1) Handling exceptiongroup>=1.2.0; python_version < '3.11' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: exceptiongroup>=1.2.0; python_version < '3.11' Handling fakeredis[lua]>=2.32.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: fakeredis[lua]>=2.32.1 (installed: fakeredis 2.34.0) (extras are currently not checked) Handling opentelemetry-api>=1.33.0 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: opentelemetry-api>=1.33.0 (installed: opentelemetry-api 1.39.1) Handling prometheus-client>=0.21.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: prometheus-client>=0.21.1 (installed: prometheus-client 0.23.0) Handling py-key-value-aio[memory,redis]>=0.3.0 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: py-key-value-aio[memory,redis]>=0.3.0 (installed: py-key-value-aio 0.3.0) (extras are currently not checked) Handling python-json-logger>=2.0.7 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: python-json-logger>=2.0.7 (installed: python-json-logger 4.0.0) Handling redis>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: redis>=5 (installed: redis 5.2.1) Handling rich>=13.9.4 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: rich>=13.9.4 (installed: rich 14.3.3) Handling taskgroup>=0.2.2; python_version < '3.11' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: taskgroup>=0.2.2; python_version < '3.11' Handling typer>=0.15.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: typer>=0.15.1 (installed: typer 0.23.1) Handling typing-extensions>=4.12.0 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: typing-extensions>=4.12.0 (installed: typing-extensions 4.15.0) Handling tzdata>=2025.2; sys_platform == 'win32' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: tzdata>=2025.2; sys_platform == 'win32' Handling opentelemetry-sdk>=1.33.0; extra == 'metrics' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: opentelemetry-sdk>=1.33.0; extra == 'metrics' + cat /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires + rm -rfv pydocket-0.17.9.dist-info/ removed 'pydocket-0.17.9.dist-info/METADATA' removed directory 'pydocket-0.17.9.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: fedora 100% | 104.8 KiB/s | 40.3 KiB | 00m00s Copr repository 100% | 4.2 KiB/s | 1.5 KiB | 00m00s Additional repo copr_r0x0d_python_fake 100% | 4.2 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.6-2.fc44.noarch" is already installed.Nothing to do. Package "python3-devel-3.14.3-1.fc45.x86_64" is already installed. Package "python3-docker-7.1.0-10.fc44.noarch" is already installed. Package "python3-fakeredis-2.34.0-1.fc45.noarch" is already installed. Package "python3-pytest-8.4.2-2.fc44.noarch" is already installed. Package "python3-pytest-asyncio-1.1.0-3.fc44.noarch" is already installed. Package "python3-pytest-xdist-3.7.0-6.fc44.noarch" is already installed. Package "python3-cloudpickle-3.1.2-2.fc44.noarch" is already installed. Package "python3-croniter-5.0.1-7.fc45.noarch" is already installed. Package "python3-fakeredis-2.34.0-1.fc45.noarch" is already installed. Package "python3-fakeredis+lua-2.34.0-1.fc45.noarch" is already installed. Package "python3-hatch-vcs-0.5.0-6.fc44.noarch" is already installed. Package "python3-hatchling-1.29.0-1.fc45.noarch" is already installed. Package "python3-opentelemetry-api-1.39.1-1.fc45.noarch" is already installed. Package "python3-packaging-26.0-1.fc45.noarch" is already installed. Package "python3-pip-25.3-2.fc44.noarch" is already installed. Package "python3-prometheus_client-0.23.0-3.fc44.noarch" is already installed. Package "python3-py-key-value-aio-0.3.0-2.fc45.noarch" is already installed. Package "python3-py-key-value-aio+memory-0.3.0-2.fc45.noarch" is already installed. Package "python3-py-key-value-aio+redis-0.3.0-2.fc45.noarch" is already installed. Package "python3-json-logger-4.0.0-2.fc44.noarch" is already installed. Package "python3-redis-5.2.1-8.fc44.noarch" is already installed. Package "python3-rich-14.3.3-1.fc45.noarch" is already installed. Package "python3-typer-0.23.1-1.fc45.noarch" is already installed. Package "python3-typing-extensions-4.15.0-4.fc45.noarch" is already installed. Package "tomcli-0.10.1-4.fc44.noarch" is already installed. Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771977600 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.p8o8lw + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + cd pydocket-0.17.9 + 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-pydocket-0.17.9-build/.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-pydocket-0.17.9-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=45 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir --output /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires Handling hatchling from build-system.requires Requirement satisfied: hatchling (installed: hatchling 1.29.0) Handling hatch-vcs from build-system.requires Requirement satisfied: hatch-vcs (installed: hatch-vcs 0.5.0) Handling cloudpickle>=3.1.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: cloudpickle>=3.1.1 (installed: cloudpickle 3.1.2) Handling croniter>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: croniter>=5 (installed: croniter 5.0.1) Handling exceptiongroup>=1.2.0; python_version < '3.11' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: exceptiongroup>=1.2.0; python_version < '3.11' Handling fakeredis[lua]>=2.32.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: fakeredis[lua]>=2.32.1 (installed: fakeredis 2.34.0) (extras are currently not checked) Handling opentelemetry-api>=1.33.0 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: opentelemetry-api>=1.33.0 (installed: opentelemetry-api 1.39.1) Handling prometheus-client>=0.21.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: prometheus-client>=0.21.1 (installed: prometheus-client 0.23.0) Handling py-key-value-aio[memory,redis]>=0.3.0 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: py-key-value-aio[memory,redis]>=0.3.0 (installed: py-key-value-aio 0.3.0) (extras are currently not checked) Handling python-json-logger>=2.0.7 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: python-json-logger>=2.0.7 (installed: python-json-logger 4.0.0) Handling redis>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: redis>=5 (installed: redis 5.2.1) Handling rich>=13.9.4 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: rich>=13.9.4 (installed: rich 14.3.3) Handling taskgroup>=0.2.2; python_version < '3.11' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: taskgroup>=0.2.2; python_version < '3.11' Handling typer>=0.15.1 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: typer>=0.15.1 (installed: typer 0.23.1) Handling typing-extensions>=4.12.0 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: typing-extensions>=4.12.0 (installed: typing-extensions 4.15.0) Handling tzdata>=2025.2; sys_platform == 'win32' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: tzdata>=2025.2; sys_platform == 'win32' Handling opentelemetry-sdk>=1.33.0; extra == 'metrics' from hook generated metadata: Requires-Dist (pydocket) Ignoring alien requirement: opentelemetry-sdk>=1.33.0; extra == 'metrics' + cat /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-buildrequires + rm -rfv pydocket-0.17.9.dist-info/ removed 'pydocket-0.17.9.dist-info/METADATA' removed directory 'pydocket-0.17.9.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.IfehRE + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-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 pydocket-0.17.9 + mkdir -p /builddir/build/BUILD/python-pydocket-0.17.9-build/.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-pydocket-0.17.9-build/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir Processing /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: pydocket Building wheel for pydocket (pyproject.toml): started Running command Building wheel for pydocket (pyproject.toml) Building wheel for pydocket (pyproject.toml): finished with status 'done' Created wheel for pydocket: filename=pydocket-0.17.9-py3-none-any.whl size=94504 sha256=47d5d921e95a249220e2f59251ba89dd9786e549e26cb00f29150952896f56dc Stored in directory: /builddir/.cache/pip/wheels/a6/e8/0d/fb807c0d79f6ed229893882c4aec8a3062a0de48adb83c2299 Successfully built pydocket + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.1bkWuC + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-build + '[' /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT '!=' / ']' + rm -rf /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT ++ dirname /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT + mkdir -p /builddir/build/BUILD/python-pydocket-0.17.9-build + mkdir /builddir/build/BUILD/python-pydocket-0.17.9-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 pydocket-0.17.9 ++ ls /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir/pydocket-0.17.9-py3-none-any.whl ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' ++ xargs basename --multiple + specifier=pydocket==0.17.9 + '[' -z pydocket==0.17.9 ']' + TMPDIR=/builddir/build/BUILD/python-pydocket-0.17.9-build/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILD/python-pydocket-0.17.9-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-pydocket-0.17.9-build/pyproject-wheeldir pydocket==0.17.9 Using pip 25.3 from /usr/lib/python3.14/site-packages/pip (python 3.14) Looking in links: /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir Processing /builddir/build/BUILD/python-pydocket-0.17.9-build/pyproject-wheeldir/pydocket-0.17.9-py3-none-any.whl Installing collected packages: pydocket Creating /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin changing mode of /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin/docket to 755 Successfully installed pydocket-0.17.9 + '[' -d /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin ']' + '[' -z sP ']' + shebang_flags=-kasP + /usr/bin/python3 -B /usr/lib/rpm/redhat/pathfix.py -pni /usr/bin/python3 -kasP /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin/docket /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin/docket: updating + rm -rfv /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin/__pycache__ + rm -f /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + site_dirs+=("/usr/lib/python3.14/site-packages") + '[' /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib64/python3.14/site-packages '!=' /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + '[' -d /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib64/python3.14/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT$site_dir/*.dist-info + echo '%ghost %dir /usr/lib/python3.14/site-packages/pydocket-0.17.9.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/pydocket-0.17.9.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-pydocket-0.17.9-build/BUILDROOT --record /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/pydocket-0.17.9.dist-info/RECORD --output /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-record + rm -fv /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/pydocket-0.17.9.dist-info/RECORD removed '/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/pydocket-0.17.9.dist-info/RECORD' + rm -fv /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/pydocket-0.17.9.dist-info/REQUESTED removed '/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/pydocket-0.17.9.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.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-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-files --output-modules /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-modules --buildroot /builddir/build/BUILD/python-pydocket-0.17.9-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-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-record --prefix /usr -l docket + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + COMPRESS='gzip -9 -n' + COMPRESS_EXT=.gz + /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/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 -j2 Bytecompiling .py files below /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14 using python3.14 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/bin/add-det --brp -j2 /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/instrumentation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/execution.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/testing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/tasks.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/worker.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/strikelist.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/docket.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/strikelist.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_result_store.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_redis.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/annotations.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_redis.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_prometheus_exporter.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_uuid7.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_telemetry.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/agenda.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_docket_snapshot.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_execution_progress.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/__main__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/__pycache__/_cancellation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_retry.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_resolution.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_timeout.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_resolution.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_progress.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_progress.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_perpetual.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_functional.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_cron.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_base.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_contextual.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_contextual.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_concurrency.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/dependencies/__pycache__/_concurrency.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/cli/__pycache__/_support.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/cli/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents Scanned 14 directories and 103 files, processed 38 inodes, 38 modified (12 replaced + 26 rewritten), 0 unsupported format, 0 errors + /usr/bin/linkdupes --brp /builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr Scanned 13 directories and 103 files, considered 103 files, read 0 files, linked 0 files, 0 errors sum of sizes of linked files: 0 bytes Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.4JftwS + umask 022 + cd /builddir/build/BUILD/python-pydocket-0.17.9-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 pydocket-0.17.9 + '[' '!' -f /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-modules ']' + PATH=/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin + PYTHONPATH=/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages + _PYTHONSITE=/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages + PYTHONDONTWRITEBYTECODE=1 + /usr/bin/python3 -sP /usr/lib/rpm/redhat/import_all_modules.py -f /builddir/build/BUILD/python-pydocket-0.17.9-build/python-pydocket-0.17.9-1.fc45.x86_64-pyproject-modules Check import: docket Check import: docket.agenda Check import: docket.annotations Check import: docket.cli Check import: docket.dependencies Check import: docket.docket Check import: docket.execution Check import: docket.instrumentation Check import: docket.strikelist Check import: docket.tasks Check import: docket.testing Check import: docket.worker + export REDIS_VERSION=memory + REDIS_VERSION=memory + 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-pydocket-0.17.9-build/BUILDROOT/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin + PYTHONPATH=/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/python-pydocket-0.17.9-build/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=2 + /usr/bin/pytest --ignore tests/instrumentation/test_tracing.py ============================= test session starts ============================== platform linux -- Python 3.14.3, pytest-8.4.2, pluggy-1.6.0 rootdir: /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9 configfile: pyproject.toml plugins: asyncio-1.1.0, xdist-3.7.0 asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 688 items tests/cli/test_clear.py sssssssss [ 1%] tests/cli/test_iterate_with_timeout.py EEEEE [ 2%] tests/cli/test_module.py E [ 2%] tests/cli/test_parsing.py ssssssssss [ 3%] tests/cli/test_snapshot.py sssssssssssss [ 5%] tests/cli/test_striking.py sssssssssssssssss [ 7%] tests/cli/test_tasks.py sss [ 8%] tests/cli/test_url_validation.py EEEEEEEEEEEEEE [ 10%] tests/cli/test_version.py EE [ 10%] tests/cli/test_watch.py ssssssssssss [ 12%] tests/cli/test_worker.py EEsEEEss [ 13%] tests/cli/test_workers.py ss [ 13%] tests/concurrency_limits/test_basic.py EEEEEEEEEEEEEE [ 15%] tests/concurrency_limits/test_errors_and_resilience.py EEEEEEE [ 17%] tests/concurrency_limits/test_execution_patterns.py EEEEEEE [ 18%] tests/concurrency_limits/test_redelivery.py EEEEEE [ 18%] tests/concurrency_limits/test_worker_mechanics.py EEEEEEEEEE [ 20%] tests/fundamentals/test_async_dependencies.py EEEEEEEEE [ 21%] tests/fundamentals/test_builtin_tasks.py EE [ 21%] tests/fundamentals/test_cancellation.py EEE [ 22%] tests/fundamentals/test_context_injection.py EEEE [ 22%] tests/fundamentals/test_cron.py EEEEEEE [ 23%] tests/fundamentals/test_errors.py EE [ 24%] tests/fundamentals/test_idempotency.py EEEE [ 24%] tests/fundamentals/test_logging.py EEE [ 25%] tests/fundamentals/test_perpetual.py EEEEEEEE [ 26%] tests/fundamentals/test_progress_state.py EEE [ 26%] tests/fundamentals/test_results.py E [ 27%] tests/fundamentals/test_retries.py EEEEEE [ 27%] tests/fundamentals/test_scheduling.py EEEEEEE [ 28%] tests/fundamentals/test_self_perpetuation.py EEE [ 29%] tests/fundamentals/test_shared_dependencies.py EEEEEEEEEEEEE [ 31%] tests/fundamentals/test_striking.py EEE [ 31%] tests/fundamentals/test_sync_dependencies.py EEEEEE [ 32%] tests/fundamentals/test_timeouts.py EEEEE [ 33%] tests/instrumentation/test_counters.py EEEEEEEEEEEE [ 35%] tests/instrumentation/test_export.py EEEEEEE [ 36%] tests/test_agenda.py EEEEEEEEEEEEEEEEEE [ 38%] tests/test_cancellation.py EEEEEEEEEEEE [ 40%] tests/test_dependencies_advanced.py EEEEEEEEEEEEEE [ 42%] tests/test_dependencies_core.py EEEEEEEEEEE [ 44%] tests/test_dependency_uniqueness.py EEEE [ 44%] tests/test_docket_clear.py EEEEEEEEEEEEE [ 46%] tests/test_docket_execution.py EEEEEEEEEEEEEEEEE [ 48%] tests/test_docket_keys.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 53%] tests/test_docket_registration.py EEEEEEEEEEEE [ 55%] tests/test_execution.py EEEEEEEEEEEE [ 57%] tests/test_execution_state.py EEEEEEEEEEEEE [ 59%] tests/test_fallback_task.py EEEEEEEE [ 60%] tests/test_handler_semantics.py EEEEE [ 61%] tests/test_key_leak_protection.py EEEEEE [ 61%] tests/test_memory_backend.py EEEEE [ 62%] tests/test_perpetual_race.py EEEEEEEEEEEEEE [ 64%] tests/test_perpetual_state.py EEEEEEEE [ 65%] tests/test_progress_basics.py EEEEEEEEEEE [ 67%] tests/test_progress_pubsub.py EEEEEEEE [ 68%] tests/test_redelivery.py EEEEEEEEEE [ 70%] tests/test_results_retrieval.py EEEEEEEEEEEEE [ 71%] tests/test_results_storage.py EEEEEEEEEEEEEEEEEE [ 74%] tests/test_strikelist.py EEEEEEEEEEEEEEEEEEEEEEE [ 77%] tests/test_striking.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 83%] tests/test_testing.py EEEEEEEEEEEEEEEEEEEEEEEEEEE [ 87%] tests/test_uuid7.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 91%] tests/worker/test_bootstrap.py EEEEEEEE [ 92%] tests/worker/test_core.py EEEEEEEEEEEEEE [ 94%] tests/worker/test_invariants.py EEEEEEEE [ 95%] tests/worker/test_lifecycle.py EEEEEEEEEE [ 97%] tests/worker/test_scheduling.py EEEEEEEEEEEEE [ 99%] tests/worker/test_ttl_zero.py EEEEE [100%] ==================================== ERRORS ==================================== _________ ERROR at setup of test_iterate_with_timeout_normal_iteration _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 590, in _send_command_parse_response | return await self.parse_response(conn, command_name, **options) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 637, in parse_response | response = await connection.read_response() | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 185, in read_response | raise response | redis.exceptions.NoScriptError: No matching script. Please use EVAL. | | During handling of the above exception, another exception occurred: | | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5578, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_iterate_with_timeout_yields_none_on_timeout ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_iterate_with_timeout_stops_on_stop_iteration ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_iterate_with_timeout_cleanup_on_break _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_iterate_with_timeout_cleanup_on_exception _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_module_invocation_as_cli_entrypoint __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args0] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args1] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args2] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args3] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args4] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args5] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args6] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args7] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_rejected[cli_args8] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_valid_urls_accepted[redis://localhost:6379/0] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_valid_urls_accepted[redis://user:pass@host:6379/1] ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_valid_urls_accepted[rediss://secure.example.com:6380/0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_valid_urls_accepted[unix:///var/run/redis.sock] ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_worker_accepts_memory_url _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_version_command ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_version_matches_semantic_versioning __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_command_exposes_all_the_options_of_worker ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_worker_command _____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_rich_logging_format __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_plain_logging_format __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_json_logging_format __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_basic_concurrency_limit ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_per_task_concurrency_limit _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_concurrency_limit_single_argument ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_concurrency_limit_different_arguments _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_concurrency_limit_max_concurrent ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_concurrency_limit_missing_argument_error ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_concurrency_limit_with_custom_scope __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_concurrency_limit_single_dependency_validation _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_concurrency_limit_without_concurrency_dependency ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_concurrency_limit_uninitialized ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_concurrency_limit_initialized _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_concurrency_limit_overlapping_execution ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_concurrency_limit_edge_cases ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_concurrency_keys_are_handled ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_worker_concurrency_with_task_failures _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_worker_concurrency_error_handling_during_execution ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_concurrency_multiple_workers_coordination ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_worker_concurrency_refresh_handles_redis_errors ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_worker_concurrency_robustness_under_stress _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_worker_concurrency_edge_cases _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_worker_graceful_shutdown_with_concurrency_management __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_worker_concurrency_limits_task_queuing_behavior ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_worker_concurrency_different_customer_branches _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_worker_concurrency_limits_different_scopes _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_concurrency_refresh_mechanism_integration ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_worker_concurrency_with_quick_tasks __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_concurrency_with_dependencies_integration ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_concurrency_limited_task_successfully_acquires_slot __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_task_timeout_with_explicit_timeout ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_task_timeout_with_concurrent_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_explicit_timeout_limits_long_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_short_tasks_complete_within_timeout __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_redeliveries_respect_concurrency_limits ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_concurrency_blocked_task_executes_exactly_once _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_worker_concurrency_missing_argument_fails_task _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_concurrency_no_limit_early_return ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_worker_concurrency_missing_argument_shows_available_args _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_worker_concurrency_cleanup_on_success _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_worker_concurrency_cleanup_on_failure _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_concurrency_cleanup_after_task_completion ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_handles_concurrent_task_cleanup_gracefully ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_finally_block_releases_concurrency_on_success _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_stale_concurrency_slots_are_scavenged_when_full ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_graceful_shutdown_releases_concurrency_slots ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_simple_function_dependencies ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_contextual_dependencies ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_dependencies_of_dependencies ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_dependencies_can_ask_for_docket_dependencies ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_dependency_failures_are_task_failures _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_contextual_dependency_before_failures_are_task_failures _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_contextual_dependency_after_failures_are_task_failures _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_dependencies_can_ask_for_task_arguments ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_task_arguments_may_be_optional _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_all_dockets_have_a_trace_task _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_all_dockets_have_a_fail_task ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_cancelling_future_task _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_cancelling_immediate_task _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_cancellation_is_idempotent _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_supports_requesting_current_docket ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_supports_requesting_current_worker ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_supports_requesting_current_execution _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_supports_requesting_current_task_key __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_cron_task_reschedules_itself ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_cron_tasks_are_automatically_scheduled _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_cron_tasks_continue_after_errors ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_cron_tasks_can_cancel_themselves ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_cron_supports_vixie_keywords ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_automatic_cron_waits_for_scheduled_time ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_cron_with_timezone ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_adding_task_by_name_when_not_registered ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_adding_task_with_unbindable_arguments _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_adding_is_idempotent __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_task_keys_are_idempotent_in_the_future _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_task_keys_are_idempotent_between_the_future_and_present _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_task_keys_are_idempotent_in_the_present ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_tasks_can_opt_into_argument_logging __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_tasks_can_opt_into_logging_collection_lengths _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_logging_inside_of_task _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_perpetual_tasks ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_perpetual_tasks_can_cancel_themselves _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_perpetual_tasks_can_change_their_parameters ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_perpetual_tasks_perpetuate_even_after_errors ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_perpetual_tasks_can_be_automatically_scheduled _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_perpetual_tasks_can_schedule_next_run_after_delay ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_cancelled_automatic_perpetual_can_be_rescheduled ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_perpetual_tasks_can_schedule_next_run_at_specific_time _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_tasks_can_report_progress _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_tasks_can_access_execution_state ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_execution_state_lifecycle _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_task_results_can_be_stored_and_retrieved ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________________ ERROR at setup of test_errors_are_logged ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_supports_simple_linear_retries _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_supports_simple_linear_retries_with_delay _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_supports_infinite_retries _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_supports_exponential_backoff_retries __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_supports_exponential_backoff_retries_under_maximum_delay _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_immediate_task_execution ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_immediate_task_execution_by_name ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_scheduled_execution __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_rescheduling_later ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_rescheduling_earlier __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_rescheduling_by_name __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_replace_without_existing_task_acts_like_add ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_self_perpetuating_immediate_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_self_perpetuating_scheduled_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_infinitely_self_perpetuating_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_shared_dependency_is_initialized_once _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_shared_dependencies_are_same_instance _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_shared_identity_is_factory_function __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_shared_cleanup_on_worker_exit _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_shared_depending_on_shared _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_shared_depending_on_depends ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_shared_can_access_current_docket_and_worker ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_late_registered_task_with_new_shared __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_multiple_shared_cleanup_order _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_shared_cleanup_on_init_failure _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_shared_async_function_factory _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_shared_sync_function_factory ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_shared_sync_context_manager_factory __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_striking_entire_tasks _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_striking_entire_parameters _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_striking_tasks_for_specific_parameters _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_sync_function_dependencies _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_sync_contextual_dependencies ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_mixed_sync_and_async_dependencies ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_sync_dependencies_of_dependencies ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_sync_dependencies_can_ask_for_docket_dependencies ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_mixed_sync_async_nested_dependencies __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_simple_timeout _____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_simple_timeout_cancels_tasks ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_timeout_can_be_extended ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_timeout_extends_by_base_by_default ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_timeout_is_compatible_with_retry ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_adding_a_task_increments_counter ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_replacing_a_task_increments_counter __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_cancelling_a_task_increments_counter __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_execution_increments_task_counters _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_failed_task_increments_failure_counter _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_retried_task_increments_retry_counter _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_exhausted_retried_task_increments_retry_counter ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_retried_task_metric_uses_bounded_labels ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_perpetuated_task_metric_uses_bounded_labels ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_redelivered_tasks_increment_redelivered_counter ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_superseded_task_increments_superseded_counter _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_replaced_task_only_counts_replacement _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_task_duration_is_measured _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_task_punctuality_is_measured ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_task_running_gauge_is_incremented ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_exports_metrics_as_prometheus_metrics _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_worker_publishes_depth_gauges _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_healthcheck_server_returns_ok _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_metrics_server_raises_import_error_without_sdk _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_agenda_creation ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_agenda_add_single_task _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_agenda_add_multiple_tasks _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_agenda_scatter_basic __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_agenda_scatter_with_start_time _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_agenda_scatter_with_jitter _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_agenda_scatter_with_large_jitter ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_agenda_scatter_single_task _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_agenda_scatter_empty __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_agenda_scatter_heterogeneous_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_agenda_scatter_preserves_order _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_agenda_reusability ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_agenda_scatter_requires_over_parameter _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_agenda_scatter_with_task_by_name ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_agenda_scatter_with_non_positive_over_parameter ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_agenda_scatter_partial_scheduling_behavior _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_agenda_scatter_auto_registers_unregistered_functions __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________________ ERROR at setup of test_agenda_clear ______________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_cancel_running_task __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_cancel_running_task_state _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_cancel_running_task_with_cleanup ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_cancel_task_that_ignores_cancellation _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_cancel_already_completed_is_noop ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_cancel_publishes_state_event ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_cancel_only_affects_running_worker ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_cancel_running_task_with_zero_execution_ttl ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_cancelled_task_with_retry_does_not_retry ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_cancelled_perpetual_task_does_not_perpetuate ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_cancel_running_task_with_timeout ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_get_result_raises_execution_cancelled_for_cancelled_task _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_sync_function_dependency ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_sync_context_manager_dependency ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_mixed_sync_and_async_dependencies ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_nested_sync_dependencies ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_sync_dependency_with_docket_context __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_sync_context_manager_cleanup_on_exception _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_sync_dependency_caching ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_mixed_nested_dependencies _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_contextvar_isolation_between_tasks ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_contextvar_cleanup_after_task _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_dependency_cache_isolated_between_tasks ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_async_exit_stack_cleanup ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_contextvar_reset_on_reentrant_call ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_contextvar_not_leaked_to_caller ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_dependencies_may_be_duplicated _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_users_can_provide_dependencies_directly ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_user_provide_retries_are_used _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_user_can_request_a_retry_after_a_delay[Retry] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_user_can_request_a_retry_after_a_delay[ExponentialRetry] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_retry_in_is_backwards_compatible_alias_for_after ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_user_can_request_a_retry_at_a_specific_time[Retry] ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_user_can_request_a_retry_at_a_specific_time[ExponentialRetry] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_user_can_request_a_retry_at_a_specific_time_in_the_past _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_dependencies_error_for_missing_task_argument ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_a_task_argument_cannot_ask_for_itself _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_retries_must_be_unique _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_runtime_subclasses_must_be_unique ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_failure_handler_subclasses_must_be_unique _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_completion_handler_subclasses_must_be_unique ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_clear_empty_docket ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_clear_with_immediate_tasks _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_clear_with_scheduled_tasks _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_clear_with_mixed_tasks _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_clear_with_parked_tasks ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_clear_preserves_strikes ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_clear_returns_total_count _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_clear_no_redis_key_leaks ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_clear_with_execution_ttl_zero _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_stream_not_created_on_docket_init ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_ensure_stream_and_group_is_idempotent _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_docket_without_worker_does_not_create_group ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_snapshot_handles_nogroup_with_real_redis[real] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_docket_schedule_method_with_immediate_task _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_docket_schedule_with_stricken_task ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_get_execution_nonexistent_key _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_get_execution_for_scheduled_task ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_get_execution_for_queued_task _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_get_execution_function_not_registered _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_get_execution_with_complex_args ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_get_execution_claim_check_pattern ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_get_execution_with_incomplete_data ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_get_execution_with_missing_when ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_get_execution_with_unregistered_function_creates_placeholder _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_cancelled_state_creates_tombstone ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_cancelled_state_respects_ttl ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_cancelled_state_with_ttl_zero _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_get_execution_after_cancel _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_replace_does_not_set_cancelled_state __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_cancellation_idempotent_with_tombstone _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_prefix_returns_name __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_key_builds_correct_key _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_queue_key_uses_key_method _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_stream_key_uses_key_method _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_workers_set_uses_key_method ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_known_task_key_uses_key_method _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_parked_task_key_uses_key_method ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_stream_id_key_uses_key_method _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_runs_key_uses_key_method ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_cancel_channel_uses_key_method _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_results_collection_uses_key_method ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_worker_tasks_set_uses_key_method ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_task_workers_set_uses_key_method ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_worker_group_name_not_prefixed _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_docket_propagates_connection_errors_on_operation ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_is_cluster_url[redis://localhost:6379/0-False] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_is_cluster_url[rediss://localhost:6379/0-False] ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_is_cluster_url[memory://-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_is_cluster_url[redis+cluster://localhost:6379/0-True] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_is_cluster_url[rediss+cluster://localhost:6379/0-True] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_is_cluster_url[redis+cluster://user:pass@localhost:6379/0-True] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_is_cluster_url[rediss+cluster://user:pass@localhost:6379/0-True] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_normalize_cluster_url[redis+cluster://localhost:6379/0-redis://localhost:6379/0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_normalize_cluster_url[rediss+cluster://localhost:6379/0-rediss://localhost:6379/0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_normalize_cluster_url[redis+cluster://user:pass@localhost:6379/0-redis://user:pass@localhost:6379/0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_normalize_cluster_url[rediss+cluster://user:pass@localhost:6379/0-rediss://user:pass@localhost:6379/0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_prefix_returns_hash_tagged_name_for_cluster ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_key_builds_hash_tagged_key_for_cluster _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_strikelist_prefix_returns_hash_tagged_name_for_cluster _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strikelist_prefix_without_redis ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_redis_connection_aenter_is_not_reentrant ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_redis_connection_cluster_client_returns_none_when_not_cluster _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_redis_connection_normalized_url_returns_original_for_non_cluster _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_standard_tasks_available_after_init __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_register_task_before_aenter ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_registered_task_usable_after_aenter __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_tasks_persist_after_aexit _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_docket_reentry_preserves_tasks _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_register_collection __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_register_task_with_custom_name _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_register_task_with_multiple_names ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_register_task_with_empty_names_defaults_to_function_name _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_register_task_with_none_names_defaults_to_function_name _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_schedule_task_by_alias _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_alias_appears_in_worker_announcements _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_compact_signature[no_args-] ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_compact_signature[one_arg-a: str] ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_compact_signature[two_args-a: str, b: str] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_compact_signature[optional_args-a: str, b: str, c: str = 'c'] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_compact_signature[logged_args-a: str, b: str = 'foo'] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_compact_signature[dependencies-a: str, b: int = 42, ...] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_compact_signature[only_dependencies-...] ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_execution_function_is_immutable ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_execution_args_is_immutable ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_execution_kwargs_is_immutable _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_execution_key_is_immutable _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_execution_from_message_without_fallback_raises_for_unknown_task _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_run_state_scheduled __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_run_state_pending_to_running ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_run_state_completed_on_success _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_run_state_failed_on_exception _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_run_state_ttl_after_completion _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_custom_execution_ttl __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_full_lifecycle_integration _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_run_add_returns_run_instance ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_error_message_stored_on_failure ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_execution_sync_with_no_redis_data ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_execution_sync_with_missing_state_field ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_execution_sync_with_string_state_value _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_mark_as_failed_without_error_message __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_default_fallback_task_logs_and_acks __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_custom_fallback_receives_original_args_kwargs _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_fallback_can_access_function_name ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_fallback_dependency_injection _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_fallback_custom_user_dependency ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_fallback_return_completes_task _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_fallback_exception_triggers_retry ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_execution_function_name_matches_for_known_tasks ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_retrying_task_is_not_marked_as_failed _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_exhausted_retries_marks_task_as_failed _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_failed_perpetual_task_is_rescheduled __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_retry_and_perpetual_work_together ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_perpetual_after_is_respected_on_failure ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_leak_detection_catches_keys_without_ttl ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_permanent_keys_are_exempt _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_exemption_mechanism __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_multiple_exemptions __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_worker_task_sets_are_exempt ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_queue_is_cleaned_up __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_docket_memory_backend _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_multiple_memory_dockets ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_memory_backend_reuses_server ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_different_memory_urls_are_isolated ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_memory_url_with_path_isolation _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_stale_perpetual_on_complete_overwrites_correct_successor[execution_ttl=0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_stale_perpetual_on_complete_overwrites_correct_successor[execution_ttl=60s] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_is_superseded_after_replace[execution_ttl=0] ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_is_superseded_after_replace[execution_ttl=60s] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_superseded_message_skipped_before_execution[execution_ttl=0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_superseded_message_skipped_before_execution[execution_ttl=60s] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_old_message_without_generation_runs_normally[execution_ttl=0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_old_message_without_generation_runs_normally[execution_ttl=60s] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_new_task_moved_by_old_scheduler_runs_normally[execution_ttl=0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_new_task_moved_by_old_scheduler_runs_normally[execution_ttl=60s] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_replace_skips_stale_stream_message[execution_ttl=0] __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_replace_skips_stale_stream_message[execution_ttl=60s] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_perpetual_successor_survives_mark_as_terminal[execution_ttl=0] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_perpetual_successor_survives_mark_as_terminal[execution_ttl=60s] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_perpetual_task_with_ttl_zero ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_perpetual_task_state_isolation _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_perpetual_task_no_state_accumulation_with_ttl_zero ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_rapid_perpetual_tasks_no_conflicts ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_perpetual_same_key_no_state_accumulation ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_perpetual_task_state_transitions_with_same_key _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_perpetual_publishes_completed_event[ttl_zero] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_perpetual_publishes_completed_event[default_ttl] ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_progress_create ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_progress_set_total ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_progress_set_total_invalid _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_progress_increment_invalid _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_progress_increment ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_progress_set_message __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_progress_dependency_injection _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_progress_deleted_on_completion _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_progress_with_multiple_increments ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_progress_without_total _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_concurrent_progress_updates ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_progress_publish_events ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_state_publish_events __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_run_subscribe_both_state_and_progress _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_completed_state_publishes_event ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_failed_state_publishes_event_with_error ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_end_to_end_progress_monitoring_with_worker _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_end_to_end_failed_task_monitoring ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_subscribing_to_completed_execution ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_redelivery_from_abandoned_worker ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_long_running_task_not_duplicated ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_retry_with_long_running_task ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_multiple_workers_no_duplicate_execution ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_perpetual_task_with_lease_renewal ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_user_timeout_longer_than_redelivery __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_workers_with_same_redelivery_timeout __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_joining_doesnt_steal_renewed_lease _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_lease_renewal_recovers_from_redis_error ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_lease_renewal_exits_cleanly_with_no_active_tasks ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_get_result_waits_for_completion ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_get_result_timeout ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_multiple_concurrent_get_result_calls __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_get_result_on_already_completed_task __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_get_result_on_already_failed_task ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_get_result_with_expired_timeout ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_get_result_failed_task_without_result_key _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_get_result_with_malformed_result_data _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_get_result_failed_task_with_missing_exception_data ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_get_result_with_timeout_timedelta ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_get_result_with_deadline_datetime ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_get_result_with_both_timeout_and_deadline_raises ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_get_result_timeout_on_pending_task ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_result_storage_for_int_return _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_result_storage_for_str_return _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_result_storage_for_dict_return _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_result_storage_for_object_return ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_no_storage_for_none_annotated_task ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_no_storage_for_runtime_none ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_exception_storage_and_retrieval ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_result_key_stored_in_execution_record _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_result_storage_uses_provided_or_default ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_result_storage_uses_custom_when_provided ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_result_storage_custom_without_setup __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_cluster_store_get_nonexistent _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________________ ERROR at setup of test_cluster_store_ttl ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_cluster_store_delete __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_cluster_store_get_many _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_cluster_store_ttl_many _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_cluster_store_put_many _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_cluster_store_delete_many _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_context_manager ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_explicit_aenter_aexit _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_aenter_is_not_reentrant ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_context_manager_reuse _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_prefix_property ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_strike_key_property __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_local_only_mode ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_memory_url_without_fakeredis ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_send_instruction_requires_connection __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________________ ERROR at setup of test_strike_method _____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________________ ERROR at setup of test_restore_method _____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________________ ERROR at setup of test_receives_strikes ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________________ ERROR at setup of test_receives_restore ____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_receives_multiple_strikes _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_new_instance_receives_existing_strikes _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________________ ERROR at setup of test_all_operators _____________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_empty_dict_not_stricken ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_type_mismatch_handled_gracefully ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_invariant_conditions_only_default_after_remove _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_invariant_no_empty_dicts_in_task_strikes_after_restore _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_invariant_no_empty_dicts_in_parameter_strikes_after_restore _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_invariant_multiple_strike_restore_cycles ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_invariant_strikelist_state_persists_through_context __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_all_dockets_see_all_strikes ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_striking_is_idempotent _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_restoring_is_idempotent ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[==-42-42-True] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_strike_operators[==-42-43-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[!=-42-43-True] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_strike_operators[!=-42-42-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[>-42-43-True] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[>-42-42-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[>-42-41-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[>=-42-43-True] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[>=-42-42-True] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_strike_operators[>=-42-41-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[<-42-41-True] _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[<-42-42-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[<-42-43-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[<=-42-41-True] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____________ ERROR at setup of test_strike_operators[<=-42-42-True] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_strike_operators[<=-42-43-False] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_strike_operators[between-value16-30-True] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_strike_operators[between-value17-10-True] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_strike_operators[between-value18-50-True] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_strike_operators[between-value19-5-False] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_strike_operators[between-value20-55-False] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_strike_operators[between-not a tuple-30-False] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_strike_operators[between-value22-30-False] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_strike_incomparable_values[>-42-string] ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_strike_incomparable_values[<-string-42] ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_strike_incomparable_values[>=-None-42] _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_strike_incomparable_values[<=-42-None] _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_strike_incomparable_values[>-value4-42] ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_strike_incomparable_values[<-42-test_value5] ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_strike_incomparable_values[>=-value6-42] ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_strike_incomparable_values[<=-42-test_value7] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_struck_automatic_perpetual_does_not_start _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_restored_automatic_perpetual_does_start ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_strikes_loaded_event_is_set_after_initial_load _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_only ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_and_args _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_and_kwargs _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_args_and_kwargs _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_assert_task_scheduled_finds_task_by_key ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_assert_task_scheduled_works_with_function_name _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_assert_task_scheduled_succeeds_with_multiple_matching_tasks _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_assert_task_scheduled_fails_when_task_not_found ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_assert_task_scheduled_fails_when_args_dont_match ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_assert_task_scheduled_fails_when_kwargs_dont_match ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_assert_task_scheduled_finds_scheduled_future_task ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_assert_task_not_scheduled_succeeds_when_no_task ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_assert_task_not_scheduled_succeeds_when_different_task _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_assert_task_not_scheduled_fails_when_task_exists ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_assert_task_not_scheduled_with_specific_args ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_assert_task_count_all_tasks ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_assert_task_count_for_specific_function ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_assert_task_count_zero _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_assert_task_count_fails_with_wrong_count ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_assert_task_count_with_function_name __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_assert_no_tasks_succeeds_when_empty __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_assert_no_tasks_fails_when_tasks_present ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_assert_no_tasks_after_tasks_complete __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_assert_task_scheduled_partial_kwargs_match _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_assert_task_count_includes_future_and_immediate_tasks _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_assert_task_scheduled_fails_when_key_doesnt_match ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_assert_task_scheduled_fails_on_empty_docket ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_uuid7_returns_uuid_object[vendored] __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_uuid7_returns_uuid_object[docket] ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_uuid7_returns_uuid_object[stdlib] ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_uuid7_is_version_7[vendored] ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_uuid7_is_version_7[docket] _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_uuid7_is_version_7[stdlib] _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_uuid7_is_variant_rfc4122[vendored] ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_uuid7_is_variant_rfc4122[docket] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_uuid7_is_variant_rfc4122[stdlib] ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_uuid7_chronological_ordering[vendored] _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_uuid7_chronological_ordering[docket] __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_uuid7_chronological_ordering[stdlib] __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_uuid7_monotonicity_rapid_generation[vendored] _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_uuid7_monotonicity_rapid_generation[docket] ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_uuid7_monotonicity_rapid_generation[stdlib] ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_uuid7_uniqueness[vendored] _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_uuid7_uniqueness[docket] ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_uuid7_uniqueness[stdlib] ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_uuid7_as_str[vendored] _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_uuid7_as_str[docket] __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_uuid7_as_str[stdlib] __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_uuid7_as_int[vendored] _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_uuid7_as_int[docket] __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_uuid7_as_int[stdlib] __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_uuid7_as_hex[vendored] _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_uuid7_as_hex[docket] __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_uuid7_as_hex[stdlib] __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_uuid7_as_bytes[vendored] ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_uuid7_as_bytes[docket] _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_uuid7_as_bytes[stdlib] _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_redis_key_cleanup_successful_task ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_redis_key_cleanup_failed_task _____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_redis_key_cleanup_cancelled_task ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_verify_remaining_keys_have_ttl_detects_leaks ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_consumer_group_created_on_first_worker_read ______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_multiple_workers_racing_to_create_group ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_worker_handles_nogroup_error_gracefully ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_worker_handles_nogroup_in_xreadgroup __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_worker_acknowledges_messages ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________________ ERROR at setup of test_two_workers_split_work _________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_reconnects_when_connection_is_lost _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_worker_respects_concurrency_limit ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_worker_handles_unregistered_task_execution_on_initial_delivery _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_worker_handles_unregistered_task_execution_on_redelivery _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_worker_announcements __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_task_announcements ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_recovers_from_redis_errors[error0] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_recovers_from_redis_errors[error1] _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_worker_can_be_told_to_skip_automatic_tasks _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_worker_concurrency_cleanup_without_dependencies ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_worker_concurrency_no_limit_with_custom_docket _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_worker_exception_before_dependencies __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_invariant_tasks_by_key_empty_after_completion _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____ ERROR at setup of test_invariant_tasks_by_key_no_growth_over_batches _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_invariant_execution_counts_empty_after_completion ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_invariant_execution_counts_cleared_after_run_at_most __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_invariant_worker_attributes_deleted_after_exit _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_invariant_cleanup_after_task_exceptions ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_invariant_cleanup_with_varied_tasks __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_invariant_shared_context_reset_after_worker_exit ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_run_forever_cancels_promptly_with_future_tasks _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_run_until_finished_exits_promptly_with_future_tasks __ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_run_at_most_cancels_promptly_with_future_tasks _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_aexit_completes_on_immediate_cancellation ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_done_set_after_early_cancellation ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___________ ERROR at setup of test_worker_rapid_start_cancel_cycles ____________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_worker_cancellation_during_setup_before_scheduler_created _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_cancellation_listener_handles_connection_error _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_cancellation_listener_handles_generic_exception ____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_worker_drains_active_tasks_on_shutdown _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __ ERROR at setup of test_perpetual_tasks_are_scheduled_close_to_target_time ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_worker_can_exit_from_perpetual_tasks_that_queue_further_tasks _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ___ ERROR at setup of test_worker_can_exit_from_long_horizon_perpetual_tasks ___ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________________ ERROR at setup of test_formatting_durations __________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______ ERROR at setup of test_worker_timeout_exceeds_redelivery_timeout _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ________ ERROR at setup of test_replacement_race_condition_stream_tasks ________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_replace_task_in_queue_before_stream __________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_rapid_replace_operations ________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_duplicate_execution_race_condition_non_perpetual_task[default_ttl] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _ ERROR at setup of test_duplicate_execution_race_condition_non_perpetual_task[zero_ttl] _ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______ ERROR at setup of test_wrongtype_error_with_legacy_known_task_key _______ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________ ERROR at setup of test_replace_task_with_legacy_known_key ___________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _________ ERROR at setup of test_worker_run_classmethod_memory_backend _________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ______________ ERROR at setup of test_task_executes_with_ttl_zero ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ ____ ERROR at setup of test_state_record_expires_immediately_with_ttl_zero _____ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _____________ ERROR at setup of test_result_storage_with_ttl_zero ______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ _______________ ERROR at setup of test_failed_task_with_ttl_zero _______________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ __________________ ERROR at setup of test_mixed_ttl_workload ___________________ + Exception Group Traceback (most recent call last): | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 696, in pytest_fixture_setup | hook_result = yield | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall | teardown.throw(exception) | ~~~~~~~~~~~~~~^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/_pytest/setuponly.py", line 36, in pytest_fixture_setup | return (yield) | ^^^^^ | File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall | res = hook_impl.function(*args) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 1196, in pytest_fixture_setup | result = call_fixture_func(fixturefunc, request, kwargs) | File "/usr/lib/python3.14/site-packages/_pytest/fixtures.py", line 930, in call_fixture_func | fixture_result = fixturefunc(**kwargs) | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 272, in _asyncgen_fixture_wrapper | result = runner.run(setup(), context=context) | File "/usr/lib64/python3.14/asyncio/runners.py", line 127, in run | return self._loop.run_until_complete(task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib64/python3.14/asyncio/base_events.py", line 719, in run_until_complete | return future.result() | ~~~~~~~~~~~~~^^ | File "/usr/lib/python3.14/site-packages/pytest_asyncio/plugin.py", line 268, in setup | res = await gen_obj.__anext__() # type: ignore[union-attr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py", line 283, in key_leak_checker | await temp_worker.run_until_finished() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 368, in run_until_finished | return await self._run(forever=False) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 413, in _run | return await self._worker_loop(redis, forever=forever) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 548, in _worker_loop | async with TaskGroup() as infra: | ~~~~~~~~~^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 72, in __aexit__ | return await self._aexit(et, exc) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib64/python3.14/asyncio/taskgroups.py", line 174, in _aexit | raise BaseExceptionGroup( | ...<2 lines>... | ) from None | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 557, in _worker_loop | await self._schedule_all_automatic_perpetual_tasks() | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/worker.py", line 763, in _schedule_all_automatic_perpetual_tasks | async with redis.lock( | ~~~~~~~~~~^ | self.docket.key("perpetual:lock"), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | timeout=AUTOMATIC_PERPETUAL_LOCK_TIMEOUT_SECONDS, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | blocking=False, | ^^^^^^^^^^^^^^^ | ): | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 165, in __aexit__ | await self.release() | File "/usr/lib/python3.14/site-packages/redis/asyncio/lock.py", line 258, in do_release | await self.lua_release( | keys=[self.name], args=[expected_token], client=self.redis | ) | File "/usr/lib/python3.14/site-packages/redis/commands/core.py", line 5572, in __call__ | return await client.evalsha(self.sha, len(keys), *args) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 616, in execute_command | return await conn.retry.call_with_retry( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ...<4 lines>... | ) | ^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry | return await do() | ^^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/redis/asyncio/client.py", line 589, in _send_command_parse_response | await conn.send_command(*args) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 505, in send_command | await self.send_packed_command( | self.pack_command(*args), check_health=kwargs.get("check_health", True) | ) | File "/usr/lib/python3.14/site-packages/redis/asyncio/connection.py", line 480, in send_packed_command | self._writer.writelines(command) | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/aioredis.py", line 111, in writelines | self._socket.sendall(chunk) # type:ignore | ~~~~~~~~~~~~~~~~~~~~^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 362, in sendall | self._parser.send(data) | ~~~~~~~~~~~~~~~~~^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 224, in _parse_commands | self._process_command(fields) | ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 254, in _process_command | result = self._run_command(func, sig, cmd_arguments, False) | File "/usr/lib/python3.14/site-packages/fakeredis/_basefakesocket.py", line 284, in _run_command | result = func(*args) # type: ignore | File "/usr/lib/python3.14/site-packages/fakeredis/commands_mixins/scripting_mixin.py", line 266, in evalsha | return self.eval(script, numkeys, *keys_and_args) | ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/builddir/build/BUILD/python-pydocket-0.17.9-build/BUILDROOT/usr/lib/python3.14/site-packages/docket/_redis.py", line 401, in patched_eval | self._server._lua_runtime = LUA_MODULE.LuaRuntime( | ^^^^^^^^^^^^^^^^^^^^^ | AttributeError: type object 'lupa.lua.LuaRuntime' has no attribute 'LuaRuntime' +------------------------------------ =========================== short test summary info ============================ ERROR tests/cli/test_iterate_with_timeout.py::test_iterate_with_timeout_normal_iteration ERROR tests/cli/test_iterate_with_timeout.py::test_iterate_with_timeout_yields_none_on_timeout ERROR tests/cli/test_iterate_with_timeout.py::test_iterate_with_timeout_stops_on_stop_iteration ERROR tests/cli/test_iterate_with_timeout.py::test_iterate_with_timeout_cleanup_on_break ERROR tests/cli/test_iterate_with_timeout.py::test_iterate_with_timeout_cleanup_on_exception ERROR tests/cli/test_module.py::test_module_invocation_as_cli_entrypoint - At... ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args0] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args1] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args2] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args3] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args4] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args5] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args6] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args7] ERROR tests/cli/test_url_validation.py::test_memory_url_rejected[cli_args8] ERROR tests/cli/test_url_validation.py::test_valid_urls_accepted[redis://localhost:6379/0] ERROR tests/cli/test_url_validation.py::test_valid_urls_accepted[redis://user:pass@host:6379/1] ERROR tests/cli/test_url_validation.py::test_valid_urls_accepted[rediss://secure.example.com:6380/0] ERROR tests/cli/test_url_validation.py::test_valid_urls_accepted[unix:///var/run/redis.sock] ERROR tests/cli/test_url_validation.py::test_worker_accepts_memory_url - Attr... ERROR tests/cli/test_version.py::test_version_command - AttributeError("type ... ERROR tests/cli/test_version.py::test_version_matches_semantic_versioning - A... ERROR tests/cli/test_worker.py::test_worker_command_exposes_all_the_options_of_worker ERROR tests/cli/test_worker.py::test_worker_command - AttributeError("type ob... ERROR tests/cli/test_worker.py::test_rich_logging_format - AttributeError("ty... ERROR tests/cli/test_worker.py::test_plain_logging_format - AttributeError("t... ERROR tests/cli/test_worker.py::test_json_logging_format - AttributeError("ty... ERROR tests/concurrency_limits/test_basic.py::test_basic_concurrency_limit - ... ERROR tests/concurrency_limits/test_basic.py::test_per_task_concurrency_limit ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_single_argument ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_different_arguments ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_max_concurrent ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_missing_argument_error ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_with_custom_scope ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_single_dependency_validation ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_without_concurrency_dependency ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_uninitialized ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_initialized ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_overlapping_execution ERROR tests/concurrency_limits/test_basic.py::test_concurrency_limit_edge_cases ERROR tests/concurrency_limits/test_basic.py::test_concurrency_keys_are_handled ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_concurrency_with_task_failures ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_concurrency_error_handling_during_execution ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_concurrency_multiple_workers_coordination ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_concurrency_refresh_handles_redis_errors ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_concurrency_robustness_under_stress ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_concurrency_edge_cases ERROR tests/concurrency_limits/test_errors_and_resilience.py::test_worker_graceful_shutdown_with_concurrency_management ERROR tests/concurrency_limits/test_execution_patterns.py::test_worker_concurrency_limits_task_queuing_behavior ERROR tests/concurrency_limits/test_execution_patterns.py::test_worker_concurrency_different_customer_branches ERROR tests/concurrency_limits/test_execution_patterns.py::test_worker_concurrency_limits_different_scopes ERROR tests/concurrency_limits/test_execution_patterns.py::test_worker_concurrency_refresh_mechanism_integration ERROR tests/concurrency_limits/test_execution_patterns.py::test_worker_concurrency_with_quick_tasks ERROR tests/concurrency_limits/test_execution_patterns.py::test_worker_concurrency_with_dependencies_integration ERROR tests/concurrency_limits/test_execution_patterns.py::test_concurrency_limited_task_successfully_acquires_slot ERROR tests/concurrency_limits/test_redelivery.py::test_task_timeout_with_explicit_timeout ERROR tests/concurrency_limits/test_redelivery.py::test_task_timeout_with_concurrent_tasks ERROR tests/concurrency_limits/test_redelivery.py::test_explicit_timeout_limits_long_tasks ERROR tests/concurrency_limits/test_redelivery.py::test_short_tasks_complete_within_timeout ERROR tests/concurrency_limits/test_redelivery.py::test_redeliveries_respect_concurrency_limits ERROR tests/concurrency_limits/test_redelivery.py::test_concurrency_blocked_task_executes_exactly_once ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_concurrency_missing_argument_fails_task ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_concurrency_no_limit_early_return ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_concurrency_missing_argument_shows_available_args ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_concurrency_cleanup_on_success ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_concurrency_cleanup_on_failure ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_concurrency_cleanup_after_task_completion ERROR tests/concurrency_limits/test_worker_mechanics.py::test_worker_handles_concurrent_task_cleanup_gracefully ERROR tests/concurrency_limits/test_worker_mechanics.py::test_finally_block_releases_concurrency_on_success ERROR tests/concurrency_limits/test_worker_mechanics.py::test_stale_concurrency_slots_are_scavenged_when_full ERROR tests/concurrency_limits/test_worker_mechanics.py::test_graceful_shutdown_releases_concurrency_slots ERROR tests/fundamentals/test_async_dependencies.py::test_simple_function_dependencies ERROR tests/fundamentals/test_async_dependencies.py::test_contextual_dependencies ERROR tests/fundamentals/test_async_dependencies.py::test_dependencies_of_dependencies ERROR tests/fundamentals/test_async_dependencies.py::test_dependencies_can_ask_for_docket_dependencies ERROR tests/fundamentals/test_async_dependencies.py::test_dependency_failures_are_task_failures ERROR tests/fundamentals/test_async_dependencies.py::test_contextual_dependency_before_failures_are_task_failures ERROR tests/fundamentals/test_async_dependencies.py::test_contextual_dependency_after_failures_are_task_failures ERROR tests/fundamentals/test_async_dependencies.py::test_dependencies_can_ask_for_task_arguments ERROR tests/fundamentals/test_async_dependencies.py::test_task_arguments_may_be_optional ERROR tests/fundamentals/test_builtin_tasks.py::test_all_dockets_have_a_trace_task ERROR tests/fundamentals/test_builtin_tasks.py::test_all_dockets_have_a_fail_task ERROR tests/fundamentals/test_cancellation.py::test_cancelling_future_task - ... ERROR tests/fundamentals/test_cancellation.py::test_cancelling_immediate_task ERROR tests/fundamentals/test_cancellation.py::test_cancellation_is_idempotent ERROR tests/fundamentals/test_context_injection.py::test_supports_requesting_current_docket ERROR tests/fundamentals/test_context_injection.py::test_supports_requesting_current_worker ERROR tests/fundamentals/test_context_injection.py::test_supports_requesting_current_execution ERROR tests/fundamentals/test_context_injection.py::test_supports_requesting_current_task_key ERROR tests/fundamentals/test_cron.py::test_cron_task_reschedules_itself - At... ERROR tests/fundamentals/test_cron.py::test_cron_tasks_are_automatically_scheduled ERROR tests/fundamentals/test_cron.py::test_cron_tasks_continue_after_errors ERROR tests/fundamentals/test_cron.py::test_cron_tasks_can_cancel_themselves ERROR tests/fundamentals/test_cron.py::test_cron_supports_vixie_keywords - At... ERROR tests/fundamentals/test_cron.py::test_automatic_cron_waits_for_scheduled_time ERROR tests/fundamentals/test_cron.py::test_cron_with_timezone - AttributeErr... ERROR tests/fundamentals/test_errors.py::test_adding_task_by_name_when_not_registered ERROR tests/fundamentals/test_errors.py::test_adding_task_with_unbindable_arguments ERROR tests/fundamentals/test_idempotency.py::test_adding_is_idempotent - Att... ERROR tests/fundamentals/test_idempotency.py::test_task_keys_are_idempotent_in_the_future ERROR tests/fundamentals/test_idempotency.py::test_task_keys_are_idempotent_between_the_future_and_present ERROR tests/fundamentals/test_idempotency.py::test_task_keys_are_idempotent_in_the_present ERROR tests/fundamentals/test_logging.py::test_tasks_can_opt_into_argument_logging ERROR tests/fundamentals/test_logging.py::test_tasks_can_opt_into_logging_collection_lengths ERROR tests/fundamentals/test_logging.py::test_logging_inside_of_task - Attri... ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks - AttributeE... ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks_can_cancel_themselves ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks_can_change_their_parameters ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks_perpetuate_even_after_errors ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks_can_be_automatically_scheduled ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks_can_schedule_next_run_after_delay ERROR tests/fundamentals/test_perpetual.py::test_cancelled_automatic_perpetual_can_be_rescheduled ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks_can_schedule_next_run_at_specific_time ERROR tests/fundamentals/test_progress_state.py::test_tasks_can_report_progress ERROR tests/fundamentals/test_progress_state.py::test_tasks_can_access_execution_state ERROR tests/fundamentals/test_progress_state.py::test_execution_state_lifecycle ERROR tests/fundamentals/test_results.py::test_task_results_can_be_stored_and_retrieved ERROR tests/fundamentals/test_retries.py::test_errors_are_logged - AttributeE... ERROR tests/fundamentals/test_retries.py::test_supports_simple_linear_retries ERROR tests/fundamentals/test_retries.py::test_supports_simple_linear_retries_with_delay ERROR tests/fundamentals/test_retries.py::test_supports_infinite_retries - At... ERROR tests/fundamentals/test_retries.py::test_supports_exponential_backoff_retries ERROR tests/fundamentals/test_retries.py::test_supports_exponential_backoff_retries_under_maximum_delay ERROR tests/fundamentals/test_scheduling.py::test_immediate_task_execution - ... ERROR tests/fundamentals/test_scheduling.py::test_immediate_task_execution_by_name ERROR tests/fundamentals/test_scheduling.py::test_scheduled_execution - Attri... ERROR tests/fundamentals/test_scheduling.py::test_rescheduling_later - Attrib... ERROR tests/fundamentals/test_scheduling.py::test_rescheduling_earlier - Attr... ERROR tests/fundamentals/test_scheduling.py::test_rescheduling_by_name - Attr... ERROR tests/fundamentals/test_scheduling.py::test_replace_without_existing_task_acts_like_add ERROR tests/fundamentals/test_self_perpetuation.py::test_self_perpetuating_immediate_tasks ERROR tests/fundamentals/test_self_perpetuation.py::test_self_perpetuating_scheduled_tasks ERROR tests/fundamentals/test_self_perpetuation.py::test_infinitely_self_perpetuating_tasks ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_dependency_is_initialized_once ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_dependencies_are_same_instance ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_identity_is_factory_function ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_cleanup_on_worker_exit ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_depending_on_shared ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_depending_on_depends ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_can_access_current_docket_and_worker ERROR tests/fundamentals/test_shared_dependencies.py::test_late_registered_task_with_new_shared ERROR tests/fundamentals/test_shared_dependencies.py::test_multiple_shared_cleanup_order ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_cleanup_on_init_failure ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_async_function_factory ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_sync_function_factory ERROR tests/fundamentals/test_shared_dependencies.py::test_shared_sync_context_manager_factory ERROR tests/fundamentals/test_striking.py::test_striking_entire_tasks - Attri... ERROR tests/fundamentals/test_striking.py::test_striking_entire_parameters - ... ERROR tests/fundamentals/test_striking.py::test_striking_tasks_for_specific_parameters ERROR tests/fundamentals/test_sync_dependencies.py::test_sync_function_dependencies ERROR tests/fundamentals/test_sync_dependencies.py::test_sync_contextual_dependencies ERROR tests/fundamentals/test_sync_dependencies.py::test_mixed_sync_and_async_dependencies ERROR tests/fundamentals/test_sync_dependencies.py::test_sync_dependencies_of_dependencies ERROR tests/fundamentals/test_sync_dependencies.py::test_sync_dependencies_can_ask_for_docket_dependencies ERROR tests/fundamentals/test_sync_dependencies.py::test_mixed_sync_async_nested_dependencies ERROR tests/fundamentals/test_timeouts.py::test_simple_timeout - AttributeErr... ERROR tests/fundamentals/test_timeouts.py::test_simple_timeout_cancels_tasks ERROR tests/fundamentals/test_timeouts.py::test_timeout_can_be_extended - Att... ERROR tests/fundamentals/test_timeouts.py::test_timeout_extends_by_base_by_default ERROR tests/fundamentals/test_timeouts.py::test_timeout_is_compatible_with_retry ERROR tests/instrumentation/test_counters.py::test_adding_a_task_increments_counter ERROR tests/instrumentation/test_counters.py::test_replacing_a_task_increments_counter ERROR tests/instrumentation/test_counters.py::test_cancelling_a_task_increments_counter ERROR tests/instrumentation/test_counters.py::test_worker_execution_increments_task_counters ERROR tests/instrumentation/test_counters.py::test_failed_task_increments_failure_counter ERROR tests/instrumentation/test_counters.py::test_retried_task_increments_retry_counter ERROR tests/instrumentation/test_counters.py::test_exhausted_retried_task_increments_retry_counter ERROR tests/instrumentation/test_counters.py::test_retried_task_metric_uses_bounded_labels ERROR tests/instrumentation/test_counters.py::test_perpetuated_task_metric_uses_bounded_labels ERROR tests/instrumentation/test_counters.py::test_redelivered_tasks_increment_redelivered_counter ERROR tests/instrumentation/test_counters.py::test_superseded_task_increments_superseded_counter ERROR tests/instrumentation/test_counters.py::test_replaced_task_only_counts_replacement ERROR tests/instrumentation/test_export.py::test_task_duration_is_measured - ... ERROR tests/instrumentation/test_export.py::test_task_punctuality_is_measured ERROR tests/instrumentation/test_export.py::test_task_running_gauge_is_incremented ERROR tests/instrumentation/test_export.py::test_exports_metrics_as_prometheus_metrics ERROR tests/instrumentation/test_export.py::test_worker_publishes_depth_gauges ERROR tests/instrumentation/test_export.py::test_healthcheck_server_returns_ok ERROR tests/instrumentation/test_export.py::test_metrics_server_raises_import_error_without_sdk ERROR tests/test_agenda.py::test_agenda_creation - AttributeError("type objec... ERROR tests/test_agenda.py::test_agenda_add_single_task - AttributeError("typ... ERROR tests/test_agenda.py::test_agenda_add_multiple_tasks - AttributeError("... ERROR tests/test_agenda.py::test_agenda_scatter_basic - AttributeError("type ... ERROR tests/test_agenda.py::test_agenda_scatter_with_start_time - AttributeEr... ERROR tests/test_agenda.py::test_agenda_scatter_with_jitter - AttributeError(... ERROR tests/test_agenda.py::test_agenda_scatter_with_large_jitter - Attribute... ERROR tests/test_agenda.py::test_agenda_scatter_single_task - AttributeError(... ERROR tests/test_agenda.py::test_agenda_scatter_empty - AttributeError("type ... ERROR tests/test_agenda.py::test_agenda_scatter_heterogeneous_tasks - Attribu... ERROR tests/test_agenda.py::test_agenda_scatter_preserves_order - AttributeEr... ERROR tests/test_agenda.py::test_agenda_reusability - AttributeError("type ob... ERROR tests/test_agenda.py::test_agenda_scatter_requires_over_parameter - Att... ERROR tests/test_agenda.py::test_agenda_scatter_with_task_by_name - Attribute... ERROR tests/test_agenda.py::test_agenda_scatter_with_non_positive_over_parameter ERROR tests/test_agenda.py::test_agenda_scatter_partial_scheduling_behavior ERROR tests/test_agenda.py::test_agenda_scatter_auto_registers_unregistered_functions ERROR tests/test_agenda.py::test_agenda_clear - AttributeError("type object '... ERROR tests/test_cancellation.py::test_cancel_running_task - AttributeError("... ERROR tests/test_cancellation.py::test_cancel_running_task_state - AttributeE... ERROR tests/test_cancellation.py::test_cancel_running_task_with_cleanup - Att... ERROR tests/test_cancellation.py::test_cancel_task_that_ignores_cancellation ERROR tests/test_cancellation.py::test_cancel_already_completed_is_noop - Att... ERROR tests/test_cancellation.py::test_cancel_publishes_state_event - Attribu... ERROR tests/test_cancellation.py::test_cancel_only_affects_running_worker - A... ERROR tests/test_cancellation.py::test_cancel_running_task_with_zero_execution_ttl ERROR tests/test_cancellation.py::test_cancelled_task_with_retry_does_not_retry ERROR tests/test_cancellation.py::test_cancelled_perpetual_task_does_not_perpetuate ERROR tests/test_cancellation.py::test_cancel_running_task_with_timeout - Att... ERROR tests/test_cancellation.py::test_get_result_raises_execution_cancelled_for_cancelled_task ERROR tests/test_dependencies_advanced.py::test_sync_function_dependency - At... ERROR tests/test_dependencies_advanced.py::test_sync_context_manager_dependency ERROR tests/test_dependencies_advanced.py::test_mixed_sync_and_async_dependencies ERROR tests/test_dependencies_advanced.py::test_nested_sync_dependencies - At... ERROR tests/test_dependencies_advanced.py::test_sync_dependency_with_docket_context ERROR tests/test_dependencies_advanced.py::test_sync_context_manager_cleanup_on_exception ERROR tests/test_dependencies_advanced.py::test_sync_dependency_caching - Att... ERROR tests/test_dependencies_advanced.py::test_mixed_nested_dependencies - A... ERROR tests/test_dependencies_advanced.py::test_contextvar_isolation_between_tasks ERROR tests/test_dependencies_advanced.py::test_contextvar_cleanup_after_task ERROR tests/test_dependencies_advanced.py::test_dependency_cache_isolated_between_tasks ERROR tests/test_dependencies_advanced.py::test_async_exit_stack_cleanup - At... ERROR tests/test_dependencies_advanced.py::test_contextvar_reset_on_reentrant_call ERROR tests/test_dependencies_advanced.py::test_contextvar_not_leaked_to_caller ERROR tests/test_dependencies_core.py::test_dependencies_may_be_duplicated - ... ERROR tests/test_dependencies_core.py::test_users_can_provide_dependencies_directly ERROR tests/test_dependencies_core.py::test_user_provide_retries_are_used - A... ERROR tests/test_dependencies_core.py::test_user_can_request_a_retry_after_a_delay[Retry] ERROR tests/test_dependencies_core.py::test_user_can_request_a_retry_after_a_delay[ExponentialRetry] ERROR tests/test_dependencies_core.py::test_retry_in_is_backwards_compatible_alias_for_after ERROR tests/test_dependencies_core.py::test_user_can_request_a_retry_at_a_specific_time[Retry] ERROR tests/test_dependencies_core.py::test_user_can_request_a_retry_at_a_specific_time[ExponentialRetry] ERROR tests/test_dependencies_core.py::test_user_can_request_a_retry_at_a_specific_time_in_the_past ERROR tests/test_dependencies_core.py::test_dependencies_error_for_missing_task_argument ERROR tests/test_dependencies_core.py::test_a_task_argument_cannot_ask_for_itself ERROR tests/test_dependency_uniqueness.py::test_retries_must_be_unique - Attr... ERROR tests/test_dependency_uniqueness.py::test_runtime_subclasses_must_be_unique ERROR tests/test_dependency_uniqueness.py::test_failure_handler_subclasses_must_be_unique ERROR tests/test_dependency_uniqueness.py::test_completion_handler_subclasses_must_be_unique ERROR tests/test_docket_clear.py::test_clear_empty_docket - AttributeError("t... ERROR tests/test_docket_clear.py::test_clear_with_immediate_tasks - Attribute... ERROR tests/test_docket_clear.py::test_clear_with_scheduled_tasks - Attribute... ERROR tests/test_docket_clear.py::test_clear_with_mixed_tasks - AttributeErro... ERROR tests/test_docket_clear.py::test_clear_with_parked_tasks - AttributeErr... ERROR tests/test_docket_clear.py::test_clear_preserves_strikes - AttributeErr... ERROR tests/test_docket_clear.py::test_clear_returns_total_count - AttributeE... ERROR tests/test_docket_clear.py::test_clear_no_redis_key_leaks - AttributeEr... ERROR tests/test_docket_clear.py::test_clear_with_execution_ttl_zero - Attrib... ERROR tests/test_docket_clear.py::test_stream_not_created_on_docket_init - At... ERROR tests/test_docket_clear.py::test_ensure_stream_and_group_is_idempotent ERROR tests/test_docket_clear.py::test_docket_without_worker_does_not_create_group ERROR tests/test_docket_clear.py::test_snapshot_handles_nogroup_with_real_redis[real] ERROR tests/test_docket_execution.py::test_docket_schedule_method_with_immediate_task ERROR tests/test_docket_execution.py::test_docket_schedule_with_stricken_task ERROR tests/test_docket_execution.py::test_get_execution_nonexistent_key - At... ERROR tests/test_docket_execution.py::test_get_execution_for_scheduled_task ERROR tests/test_docket_execution.py::test_get_execution_for_queued_task - At... ERROR tests/test_docket_execution.py::test_get_execution_function_not_registered ERROR tests/test_docket_execution.py::test_get_execution_with_complex_args - ... ERROR tests/test_docket_execution.py::test_get_execution_claim_check_pattern ERROR tests/test_docket_execution.py::test_get_execution_with_incomplete_data ERROR tests/test_docket_execution.py::test_get_execution_with_missing_when - ... ERROR tests/test_docket_execution.py::test_get_execution_with_unregistered_function_creates_placeholder ERROR tests/test_docket_execution.py::test_cancelled_state_creates_tombstone ERROR tests/test_docket_execution.py::test_cancelled_state_respects_ttl - Att... ERROR tests/test_docket_execution.py::test_cancelled_state_with_ttl_zero - At... ERROR tests/test_docket_execution.py::test_get_execution_after_cancel - Attri... ERROR tests/test_docket_execution.py::test_replace_does_not_set_cancelled_state ERROR tests/test_docket_execution.py::test_cancellation_idempotent_with_tombstone ERROR tests/test_docket_keys.py::test_prefix_returns_name - AttributeError("t... ERROR tests/test_docket_keys.py::test_key_builds_correct_key - AttributeError... ERROR tests/test_docket_keys.py::test_queue_key_uses_key_method - AttributeEr... ERROR tests/test_docket_keys.py::test_stream_key_uses_key_method - AttributeE... ERROR tests/test_docket_keys.py::test_workers_set_uses_key_method - Attribute... ERROR tests/test_docket_keys.py::test_known_task_key_uses_key_method - Attrib... ERROR tests/test_docket_keys.py::test_parked_task_key_uses_key_method - Attri... ERROR tests/test_docket_keys.py::test_stream_id_key_uses_key_method - Attribu... ERROR tests/test_docket_keys.py::test_runs_key_uses_key_method - AttributeErr... ERROR tests/test_docket_keys.py::test_cancel_channel_uses_key_method - Attrib... ERROR tests/test_docket_keys.py::test_results_collection_uses_key_method - At... ERROR tests/test_docket_keys.py::test_worker_tasks_set_uses_key_method - Attr... ERROR tests/test_docket_keys.py::test_task_workers_set_uses_key_method - Attr... ERROR tests/test_docket_keys.py::test_worker_group_name_not_prefixed - Attrib... ERROR tests/test_docket_keys.py::test_docket_propagates_connection_errors_on_operation ERROR tests/test_docket_keys.py::test_is_cluster_url[redis://localhost:6379/0-False] ERROR tests/test_docket_keys.py::test_is_cluster_url[rediss://localhost:6379/0-False] ERROR tests/test_docket_keys.py::test_is_cluster_url[memory://-False] - Attri... ERROR tests/test_docket_keys.py::test_is_cluster_url[redis+cluster://localhost:6379/0-True] ERROR tests/test_docket_keys.py::test_is_cluster_url[rediss+cluster://localhost:6379/0-True] ERROR tests/test_docket_keys.py::test_is_cluster_url[redis+cluster://user:pass@localhost:6379/0-True] ERROR tests/test_docket_keys.py::test_is_cluster_url[rediss+cluster://user:pass@localhost:6379/0-True] ERROR tests/test_docket_keys.py::test_normalize_cluster_url[redis+cluster://localhost:6379/0-redis://localhost:6379/0] ERROR tests/test_docket_keys.py::test_normalize_cluster_url[rediss+cluster://localhost:6379/0-rediss://localhost:6379/0] ERROR tests/test_docket_keys.py::test_normalize_cluster_url[redis+cluster://user:pass@localhost:6379/0-redis://user:pass@localhost:6379/0] ERROR tests/test_docket_keys.py::test_normalize_cluster_url[rediss+cluster://user:pass@localhost:6379/0-rediss://user:pass@localhost:6379/0] ERROR tests/test_docket_keys.py::test_prefix_returns_hash_tagged_name_for_cluster ERROR tests/test_docket_keys.py::test_key_builds_hash_tagged_key_for_cluster ERROR tests/test_docket_keys.py::test_strikelist_prefix_returns_hash_tagged_name_for_cluster ERROR tests/test_docket_keys.py::test_strikelist_prefix_without_redis - Attri... ERROR tests/test_docket_keys.py::test_redis_connection_aenter_is_not_reentrant ERROR tests/test_docket_keys.py::test_redis_connection_cluster_client_returns_none_when_not_cluster ERROR tests/test_docket_keys.py::test_redis_connection_normalized_url_returns_original_for_non_cluster ERROR tests/test_docket_registration.py::test_standard_tasks_available_after_init ERROR tests/test_docket_registration.py::test_register_task_before_aenter - A... ERROR tests/test_docket_registration.py::test_registered_task_usable_after_aenter ERROR tests/test_docket_registration.py::test_tasks_persist_after_aexit - Att... ERROR tests/test_docket_registration.py::test_docket_reentry_preserves_tasks ERROR tests/test_docket_registration.py::test_register_collection - Attribute... ERROR tests/test_docket_registration.py::test_register_task_with_custom_name ERROR tests/test_docket_registration.py::test_register_task_with_multiple_names ERROR tests/test_docket_registration.py::test_register_task_with_empty_names_defaults_to_function_name ERROR tests/test_docket_registration.py::test_register_task_with_none_names_defaults_to_function_name ERROR tests/test_docket_registration.py::test_schedule_task_by_alias - Attrib... ERROR tests/test_docket_registration.py::test_alias_appears_in_worker_announcements ERROR tests/test_execution.py::test_compact_signature[no_args-] - AttributeEr... ERROR tests/test_execution.py::test_compact_signature[one_arg-a: str] - Attri... ERROR tests/test_execution.py::test_compact_signature[two_args-a: str, b: str] ERROR tests/test_execution.py::test_compact_signature[optional_args-a: str, b: str, c: str = 'c'] ERROR tests/test_execution.py::test_compact_signature[logged_args-a: str, b: str = 'foo'] ERROR tests/test_execution.py::test_compact_signature[dependencies-a: str, b: int = 42, ...] ERROR tests/test_execution.py::test_compact_signature[only_dependencies-...] ERROR tests/test_execution.py::test_execution_function_is_immutable - Attribu... ERROR tests/test_execution.py::test_execution_args_is_immutable - AttributeEr... ERROR tests/test_execution.py::test_execution_kwargs_is_immutable - Attribute... ERROR tests/test_execution.py::test_execution_key_is_immutable - AttributeErr... ERROR tests/test_execution.py::test_execution_from_message_without_fallback_raises_for_unknown_task ERROR tests/test_execution_state.py::test_run_state_scheduled - AttributeErro... ERROR tests/test_execution_state.py::test_run_state_pending_to_running - Attr... ERROR tests/test_execution_state.py::test_run_state_completed_on_success - At... ERROR tests/test_execution_state.py::test_run_state_failed_on_exception - Att... ERROR tests/test_execution_state.py::test_run_state_ttl_after_completion - At... ERROR tests/test_execution_state.py::test_custom_execution_ttl - AttributeErr... ERROR tests/test_execution_state.py::test_full_lifecycle_integration - Attrib... ERROR tests/test_execution_state.py::test_run_add_returns_run_instance - Attr... ERROR tests/test_execution_state.py::test_error_message_stored_on_failure - A... ERROR tests/test_execution_state.py::test_execution_sync_with_no_redis_data ERROR tests/test_execution_state.py::test_execution_sync_with_missing_state_field ERROR tests/test_execution_state.py::test_execution_sync_with_string_state_value ERROR tests/test_execution_state.py::test_mark_as_failed_without_error_message ERROR tests/test_fallback_task.py::test_default_fallback_task_logs_and_acks ERROR tests/test_fallback_task.py::test_custom_fallback_receives_original_args_kwargs ERROR tests/test_fallback_task.py::test_fallback_can_access_function_name - A... ERROR tests/test_fallback_task.py::test_fallback_dependency_injection - Attri... ERROR tests/test_fallback_task.py::test_fallback_custom_user_dependency - Att... ERROR tests/test_fallback_task.py::test_fallback_return_completes_task - Attr... ERROR tests/test_fallback_task.py::test_fallback_exception_triggers_retry - A... ERROR tests/test_fallback_task.py::test_execution_function_name_matches_for_known_tasks ERROR tests/test_handler_semantics.py::test_retrying_task_is_not_marked_as_failed ERROR tests/test_handler_semantics.py::test_exhausted_retries_marks_task_as_failed ERROR tests/test_handler_semantics.py::test_failed_perpetual_task_is_rescheduled ERROR tests/test_handler_semantics.py::test_retry_and_perpetual_work_together ERROR tests/test_handler_semantics.py::test_perpetual_after_is_respected_on_failure ERROR tests/test_key_leak_protection.py::test_leak_detection_catches_keys_without_ttl ERROR tests/test_key_leak_protection.py::test_permanent_keys_are_exempt - Att... ERROR tests/test_key_leak_protection.py::test_exemption_mechanism - Attribute... ERROR tests/test_key_leak_protection.py::test_multiple_exemptions - Attribute... ERROR tests/test_key_leak_protection.py::test_worker_task_sets_are_exempt - A... ERROR tests/test_key_leak_protection.py::test_queue_is_cleaned_up - Attribute... ERROR tests/test_memory_backend.py::test_docket_memory_backend - AttributeErr... ERROR tests/test_memory_backend.py::test_multiple_memory_dockets - AttributeE... ERROR tests/test_memory_backend.py::test_memory_backend_reuses_server - Attri... ERROR tests/test_memory_backend.py::test_different_memory_urls_are_isolated ERROR tests/test_memory_backend.py::test_memory_url_with_path_isolation - Att... ERROR tests/test_perpetual_race.py::test_stale_perpetual_on_complete_overwrites_correct_successor[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_stale_perpetual_on_complete_overwrites_correct_successor[execution_ttl=60s] ERROR tests/test_perpetual_race.py::test_is_superseded_after_replace[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_is_superseded_after_replace[execution_ttl=60s] ERROR tests/test_perpetual_race.py::test_superseded_message_skipped_before_execution[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_superseded_message_skipped_before_execution[execution_ttl=60s] ERROR tests/test_perpetual_race.py::test_old_message_without_generation_runs_normally[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_old_message_without_generation_runs_normally[execution_ttl=60s] ERROR tests/test_perpetual_race.py::test_new_task_moved_by_old_scheduler_runs_normally[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_new_task_moved_by_old_scheduler_runs_normally[execution_ttl=60s] ERROR tests/test_perpetual_race.py::test_replace_skips_stale_stream_message[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_replace_skips_stale_stream_message[execution_ttl=60s] ERROR tests/test_perpetual_race.py::test_perpetual_successor_survives_mark_as_terminal[execution_ttl=0] ERROR tests/test_perpetual_race.py::test_perpetual_successor_survives_mark_as_terminal[execution_ttl=60s] ERROR tests/test_perpetual_state.py::test_perpetual_task_with_ttl_zero - Attr... ERROR tests/test_perpetual_state.py::test_perpetual_task_state_isolation - At... ERROR tests/test_perpetual_state.py::test_perpetual_task_no_state_accumulation_with_ttl_zero ERROR tests/test_perpetual_state.py::test_rapid_perpetual_tasks_no_conflicts ERROR tests/test_perpetual_state.py::test_perpetual_same_key_no_state_accumulation ERROR tests/test_perpetual_state.py::test_perpetual_task_state_transitions_with_same_key ERROR tests/test_perpetual_state.py::test_perpetual_publishes_completed_event[ttl_zero] ERROR tests/test_perpetual_state.py::test_perpetual_publishes_completed_event[default_ttl] ERROR tests/test_progress_basics.py::test_progress_create - AttributeError("t... ERROR tests/test_progress_basics.py::test_progress_set_total - AttributeError... ERROR tests/test_progress_basics.py::test_progress_set_total_invalid - Attrib... ERROR tests/test_progress_basics.py::test_progress_increment_invalid - Attrib... ERROR tests/test_progress_basics.py::test_progress_increment - AttributeError... ERROR tests/test_progress_basics.py::test_progress_set_message - AttributeErr... ERROR tests/test_progress_basics.py::test_progress_dependency_injection - Att... ERROR tests/test_progress_basics.py::test_progress_deleted_on_completion - At... ERROR tests/test_progress_basics.py::test_progress_with_multiple_increments ERROR tests/test_progress_basics.py::test_progress_without_total - AttributeE... ERROR tests/test_progress_basics.py::test_concurrent_progress_updates - Attri... ERROR tests/test_progress_pubsub.py::test_progress_publish_events - Attribute... ERROR tests/test_progress_pubsub.py::test_state_publish_events - AttributeErr... ERROR tests/test_progress_pubsub.py::test_run_subscribe_both_state_and_progress ERROR tests/test_progress_pubsub.py::test_completed_state_publishes_event - A... ERROR tests/test_progress_pubsub.py::test_failed_state_publishes_event_with_error ERROR tests/test_progress_pubsub.py::test_end_to_end_progress_monitoring_with_worker ERROR tests/test_progress_pubsub.py::test_end_to_end_failed_task_monitoring ERROR tests/test_progress_pubsub.py::test_subscribing_to_completed_execution ERROR tests/test_redelivery.py::test_redelivery_from_abandoned_worker - Attri... ERROR tests/test_redelivery.py::test_long_running_task_not_duplicated - Attri... ERROR tests/test_redelivery.py::test_retry_with_long_running_task - Attribute... ERROR tests/test_redelivery.py::test_multiple_workers_no_duplicate_execution ERROR tests/test_redelivery.py::test_perpetual_task_with_lease_renewal - Attr... ERROR tests/test_redelivery.py::test_user_timeout_longer_than_redelivery - At... ERROR tests/test_redelivery.py::test_workers_with_same_redelivery_timeout - A... ERROR tests/test_redelivery.py::test_worker_joining_doesnt_steal_renewed_lease ERROR tests/test_redelivery.py::test_lease_renewal_recovers_from_redis_error ERROR tests/test_redelivery.py::test_lease_renewal_exits_cleanly_with_no_active_tasks ERROR tests/test_results_retrieval.py::test_get_result_waits_for_completion ERROR tests/test_results_retrieval.py::test_get_result_timeout - AttributeErr... ERROR tests/test_results_retrieval.py::test_multiple_concurrent_get_result_calls ERROR tests/test_results_retrieval.py::test_get_result_on_already_completed_task ERROR tests/test_results_retrieval.py::test_get_result_on_already_failed_task ERROR tests/test_results_retrieval.py::test_get_result_with_expired_timeout ERROR tests/test_results_retrieval.py::test_get_result_failed_task_without_result_key ERROR tests/test_results_retrieval.py::test_get_result_with_malformed_result_data ERROR tests/test_results_retrieval.py::test_get_result_failed_task_with_missing_exception_data ERROR tests/test_results_retrieval.py::test_get_result_with_timeout_timedelta ERROR tests/test_results_retrieval.py::test_get_result_with_deadline_datetime ERROR tests/test_results_retrieval.py::test_get_result_with_both_timeout_and_deadline_raises ERROR tests/test_results_retrieval.py::test_get_result_timeout_on_pending_task ERROR tests/test_results_storage.py::test_result_storage_for_int_return - Att... ERROR tests/test_results_storage.py::test_result_storage_for_str_return - Att... ERROR tests/test_results_storage.py::test_result_storage_for_dict_return - At... ERROR tests/test_results_storage.py::test_result_storage_for_object_return - ... ERROR tests/test_results_storage.py::test_no_storage_for_none_annotated_task ERROR tests/test_results_storage.py::test_no_storage_for_runtime_none - Attri... ERROR tests/test_results_storage.py::test_exception_storage_and_retrieval - A... ERROR tests/test_results_storage.py::test_result_key_stored_in_execution_record ERROR tests/test_results_storage.py::test_result_storage_uses_provided_or_default ERROR tests/test_results_storage.py::test_result_storage_uses_custom_when_provided ERROR tests/test_results_storage.py::test_result_storage_custom_without_setup ERROR tests/test_results_storage.py::test_cluster_store_get_nonexistent - Att... ERROR tests/test_results_storage.py::test_cluster_store_ttl - AttributeError(... ERROR tests/test_results_storage.py::test_cluster_store_delete - AttributeErr... ERROR tests/test_results_storage.py::test_cluster_store_get_many - AttributeE... ERROR tests/test_results_storage.py::test_cluster_store_ttl_many - AttributeE... ERROR tests/test_results_storage.py::test_cluster_store_put_many - AttributeE... ERROR tests/test_results_storage.py::test_cluster_store_delete_many - Attribu... ERROR tests/test_strikelist.py::test_context_manager - AttributeError("type o... ERROR tests/test_strikelist.py::test_explicit_aenter_aexit - AttributeError("... ERROR tests/test_strikelist.py::test_aenter_is_not_reentrant - AttributeError... ERROR tests/test_strikelist.py::test_context_manager_reuse - AttributeError("... ERROR tests/test_strikelist.py::test_prefix_property - AttributeError("type o... ERROR tests/test_strikelist.py::test_strike_key_property - AttributeError("ty... ERROR tests/test_strikelist.py::test_local_only_mode - AttributeError("type o... ERROR tests/test_strikelist.py::test_memory_url_without_fakeredis - Attribute... ERROR tests/test_strikelist.py::test_send_instruction_requires_connection - A... ERROR tests/test_strikelist.py::test_strike_method - AttributeError("type obj... ERROR tests/test_strikelist.py::test_restore_method - AttributeError("type ob... ERROR tests/test_strikelist.py::test_receives_strikes - AttributeError("type ... ERROR tests/test_strikelist.py::test_receives_restore - AttributeError("type ... ERROR tests/test_strikelist.py::test_receives_multiple_strikes - AttributeErr... ERROR tests/test_strikelist.py::test_new_instance_receives_existing_strikes ERROR tests/test_strikelist.py::test_all_operators - AttributeError("type obj... ERROR tests/test_strikelist.py::test_empty_dict_not_stricken - AttributeError... ERROR tests/test_strikelist.py::test_type_mismatch_handled_gracefully - Attri... ERROR tests/test_strikelist.py::test_invariant_conditions_only_default_after_remove ERROR tests/test_strikelist.py::test_invariant_no_empty_dicts_in_task_strikes_after_restore ERROR tests/test_strikelist.py::test_invariant_no_empty_dicts_in_parameter_strikes_after_restore ERROR tests/test_strikelist.py::test_invariant_multiple_strike_restore_cycles ERROR tests/test_strikelist.py::test_invariant_strikelist_state_persists_through_context ERROR tests/test_striking.py::test_all_dockets_see_all_strikes - AttributeErr... ERROR tests/test_striking.py::test_striking_is_idempotent - AttributeError("t... ERROR tests/test_striking.py::test_restoring_is_idempotent - AttributeError("... ERROR tests/test_striking.py::test_strike_operators[==-42-42-True] - Attribut... ERROR tests/test_striking.py::test_strike_operators[==-42-43-False] - Attribu... ERROR tests/test_striking.py::test_strike_operators[!=-42-43-True] - Attribut... ERROR tests/test_striking.py::test_strike_operators[!=-42-42-False] - Attribu... ERROR tests/test_striking.py::test_strike_operators[>-42-43-True] - Attribute... ERROR tests/test_striking.py::test_strike_operators[>-42-42-False] - Attribut... ERROR tests/test_striking.py::test_strike_operators[>-42-41-False] - Attribut... ERROR tests/test_striking.py::test_strike_operators[>=-42-43-True] - Attribut... ERROR tests/test_striking.py::test_strike_operators[>=-42-42-True] - Attribut... ERROR tests/test_striking.py::test_strike_operators[>=-42-41-False] - Attribu... ERROR tests/test_striking.py::test_strike_operators[<-42-41-True] - Attribute... ERROR tests/test_striking.py::test_strike_operators[<-42-42-False] - Attribut... ERROR tests/test_striking.py::test_strike_operators[<-42-43-False] - Attribut... ERROR tests/test_striking.py::test_strike_operators[<=-42-41-True] - Attribut... ERROR tests/test_striking.py::test_strike_operators[<=-42-42-True] - Attribut... ERROR tests/test_striking.py::test_strike_operators[<=-42-43-False] - Attribu... ERROR tests/test_striking.py::test_strike_operators[between-value16-30-True] ERROR tests/test_striking.py::test_strike_operators[between-value17-10-True] ERROR tests/test_striking.py::test_strike_operators[between-value18-50-True] ERROR tests/test_striking.py::test_strike_operators[between-value19-5-False] ERROR tests/test_striking.py::test_strike_operators[between-value20-55-False] ERROR tests/test_striking.py::test_strike_operators[between-not a tuple-30-False] ERROR tests/test_striking.py::test_strike_operators[between-value22-30-False] ERROR tests/test_striking.py::test_strike_incomparable_values[>-42-string] - ... ERROR tests/test_striking.py::test_strike_incomparable_values[<-string-42] - ... ERROR tests/test_striking.py::test_strike_incomparable_values[>=-None-42] - A... ERROR tests/test_striking.py::test_strike_incomparable_values[<=-42-None] - A... ERROR tests/test_striking.py::test_strike_incomparable_values[>-value4-42] - ... ERROR tests/test_striking.py::test_strike_incomparable_values[<-42-test_value5] ERROR tests/test_striking.py::test_strike_incomparable_values[>=-value6-42] ERROR tests/test_striking.py::test_strike_incomparable_values[<=-42-test_value7] ERROR tests/test_striking.py::test_struck_automatic_perpetual_does_not_start ERROR tests/test_striking.py::test_restored_automatic_perpetual_does_start - ... ERROR tests/test_striking.py::test_strikes_loaded_event_is_set_after_initial_load ERROR tests/test_testing.py::test_assert_task_scheduled_finds_task_by_function_only ERROR tests/test_testing.py::test_assert_task_scheduled_finds_task_by_function_and_args ERROR tests/test_testing.py::test_assert_task_scheduled_finds_task_by_function_and_kwargs ERROR tests/test_testing.py::test_assert_task_scheduled_finds_task_by_function_args_and_kwargs ERROR tests/test_testing.py::test_assert_task_scheduled_finds_task_by_key - A... ERROR tests/test_testing.py::test_assert_task_scheduled_works_with_function_name ERROR tests/test_testing.py::test_assert_task_scheduled_succeeds_with_multiple_matching_tasks ERROR tests/test_testing.py::test_assert_task_scheduled_fails_when_task_not_found ERROR tests/test_testing.py::test_assert_task_scheduled_fails_when_args_dont_match ERROR tests/test_testing.py::test_assert_task_scheduled_fails_when_kwargs_dont_match ERROR tests/test_testing.py::test_assert_task_scheduled_finds_scheduled_future_task ERROR tests/test_testing.py::test_assert_task_not_scheduled_succeeds_when_no_task ERROR tests/test_testing.py::test_assert_task_not_scheduled_succeeds_when_different_task ERROR tests/test_testing.py::test_assert_task_not_scheduled_fails_when_task_exists ERROR tests/test_testing.py::test_assert_task_not_scheduled_with_specific_args ERROR tests/test_testing.py::test_assert_task_count_all_tasks - AttributeErro... ERROR tests/test_testing.py::test_assert_task_count_for_specific_function - A... ERROR tests/test_testing.py::test_assert_task_count_zero - AttributeError("ty... ERROR tests/test_testing.py::test_assert_task_count_fails_with_wrong_count - ... ERROR tests/test_testing.py::test_assert_task_count_with_function_name - Attr... ERROR tests/test_testing.py::test_assert_no_tasks_succeeds_when_empty - Attri... ERROR tests/test_testing.py::test_assert_no_tasks_fails_when_tasks_present - ... ERROR tests/test_testing.py::test_assert_no_tasks_after_tasks_complete - Attr... ERROR tests/test_testing.py::test_assert_task_scheduled_partial_kwargs_match ERROR tests/test_testing.py::test_assert_task_count_includes_future_and_immediate_tasks ERROR tests/test_testing.py::test_assert_task_scheduled_fails_when_key_doesnt_match ERROR tests/test_testing.py::test_assert_task_scheduled_fails_on_empty_docket ERROR tests/test_uuid7.py::test_uuid7_returns_uuid_object[vendored] - Attribu... ERROR tests/test_uuid7.py::test_uuid7_returns_uuid_object[docket] - Attribute... ERROR tests/test_uuid7.py::test_uuid7_returns_uuid_object[stdlib] - Attribute... ERROR tests/test_uuid7.py::test_uuid7_is_version_7[vendored] - AttributeError... ERROR tests/test_uuid7.py::test_uuid7_is_version_7[docket] - AttributeError("... ERROR tests/test_uuid7.py::test_uuid7_is_version_7[stdlib] - AttributeError("... ERROR tests/test_uuid7.py::test_uuid7_is_variant_rfc4122[vendored] - Attribut... ERROR tests/test_uuid7.py::test_uuid7_is_variant_rfc4122[docket] - AttributeE... ERROR tests/test_uuid7.py::test_uuid7_is_variant_rfc4122[stdlib] - AttributeE... ERROR tests/test_uuid7.py::test_uuid7_chronological_ordering[vendored] - Attr... ERROR tests/test_uuid7.py::test_uuid7_chronological_ordering[docket] - Attrib... ERROR tests/test_uuid7.py::test_uuid7_chronological_ordering[stdlib] - Attrib... ERROR tests/test_uuid7.py::test_uuid7_monotonicity_rapid_generation[vendored] ERROR tests/test_uuid7.py::test_uuid7_monotonicity_rapid_generation[docket] ERROR tests/test_uuid7.py::test_uuid7_monotonicity_rapid_generation[stdlib] ERROR tests/test_uuid7.py::test_uuid7_uniqueness[vendored] - AttributeError("... ERROR tests/test_uuid7.py::test_uuid7_uniqueness[docket] - AttributeError("ty... ERROR tests/test_uuid7.py::test_uuid7_uniqueness[stdlib] - AttributeError("ty... ERROR tests/test_uuid7.py::test_uuid7_as_str[vendored] - AttributeError("type... ERROR tests/test_uuid7.py::test_uuid7_as_str[docket] - AttributeError("type o... ERROR tests/test_uuid7.py::test_uuid7_as_str[stdlib] - AttributeError("type o... ERROR tests/test_uuid7.py::test_uuid7_as_int[vendored] - AttributeError("type... ERROR tests/test_uuid7.py::test_uuid7_as_int[docket] - AttributeError("type o... ERROR tests/test_uuid7.py::test_uuid7_as_int[stdlib] - AttributeError("type o... ERROR tests/test_uuid7.py::test_uuid7_as_hex[vendored] - AttributeError("type... ERROR tests/test_uuid7.py::test_uuid7_as_hex[docket] - AttributeError("type o... ERROR tests/test_uuid7.py::test_uuid7_as_hex[stdlib] - AttributeError("type o... ERROR tests/test_uuid7.py::test_uuid7_as_bytes[vendored] - AttributeError("ty... ERROR tests/test_uuid7.py::test_uuid7_as_bytes[docket] - AttributeError("type... ERROR tests/test_uuid7.py::test_uuid7_as_bytes[stdlib] - AttributeError("type... ERROR tests/worker/test_bootstrap.py::test_redis_key_cleanup_successful_task ERROR tests/worker/test_bootstrap.py::test_redis_key_cleanup_failed_task - At... ERROR tests/worker/test_bootstrap.py::test_redis_key_cleanup_cancelled_task ERROR tests/worker/test_bootstrap.py::test_verify_remaining_keys_have_ttl_detects_leaks ERROR tests/worker/test_bootstrap.py::test_consumer_group_created_on_first_worker_read ERROR tests/worker/test_bootstrap.py::test_multiple_workers_racing_to_create_group ERROR tests/worker/test_bootstrap.py::test_worker_handles_nogroup_error_gracefully ERROR tests/worker/test_bootstrap.py::test_worker_handles_nogroup_in_xreadgroup ERROR tests/worker/test_core.py::test_worker_acknowledges_messages - Attribut... ERROR tests/worker/test_core.py::test_two_workers_split_work - AttributeError... ERROR tests/worker/test_core.py::test_worker_reconnects_when_connection_is_lost ERROR tests/worker/test_core.py::test_worker_respects_concurrency_limit - Att... ERROR tests/worker/test_core.py::test_worker_handles_unregistered_task_execution_on_initial_delivery ERROR tests/worker/test_core.py::test_worker_handles_unregistered_task_execution_on_redelivery ERROR tests/worker/test_core.py::test_worker_announcements - AttributeError("... ERROR tests/worker/test_core.py::test_task_announcements - AttributeError("ty... ERROR tests/worker/test_core.py::test_worker_recovers_from_redis_errors[error0] ERROR tests/worker/test_core.py::test_worker_recovers_from_redis_errors[error1] ERROR tests/worker/test_core.py::test_worker_can_be_told_to_skip_automatic_tasks ERROR tests/worker/test_core.py::test_worker_concurrency_cleanup_without_dependencies ERROR tests/worker/test_core.py::test_worker_concurrency_no_limit_with_custom_docket ERROR tests/worker/test_core.py::test_worker_exception_before_dependencies - ... ERROR tests/worker/test_invariants.py::test_invariant_tasks_by_key_empty_after_completion ERROR tests/worker/test_invariants.py::test_invariant_tasks_by_key_no_growth_over_batches ERROR tests/worker/test_invariants.py::test_invariant_execution_counts_empty_after_completion ERROR tests/worker/test_invariants.py::test_invariant_execution_counts_cleared_after_run_at_most ERROR tests/worker/test_invariants.py::test_invariant_worker_attributes_deleted_after_exit ERROR tests/worker/test_invariants.py::test_invariant_cleanup_after_task_exceptions ERROR tests/worker/test_invariants.py::test_invariant_cleanup_with_varied_tasks ERROR tests/worker/test_invariants.py::test_invariant_shared_context_reset_after_worker_exit ERROR tests/worker/test_lifecycle.py::test_run_forever_cancels_promptly_with_future_tasks ERROR tests/worker/test_lifecycle.py::test_run_until_finished_exits_promptly_with_future_tasks ERROR tests/worker/test_lifecycle.py::test_run_at_most_cancels_promptly_with_future_tasks ERROR tests/worker/test_lifecycle.py::test_worker_aexit_completes_on_immediate_cancellation ERROR tests/worker/test_lifecycle.py::test_worker_done_set_after_early_cancellation ERROR tests/worker/test_lifecycle.py::test_worker_rapid_start_cancel_cycles ERROR tests/worker/test_lifecycle.py::test_worker_cancellation_during_setup_before_scheduler_created ERROR tests/worker/test_lifecycle.py::test_cancellation_listener_handles_connection_error ERROR tests/worker/test_lifecycle.py::test_cancellation_listener_handles_generic_exception ERROR tests/worker/test_lifecycle.py::test_worker_drains_active_tasks_on_shutdown ERROR tests/worker/test_scheduling.py::test_perpetual_tasks_are_scheduled_close_to_target_time ERROR tests/worker/test_scheduling.py::test_worker_can_exit_from_perpetual_tasks_that_queue_further_tasks ERROR tests/worker/test_scheduling.py::test_worker_can_exit_from_long_horizon_perpetual_tasks ERROR tests/worker/test_scheduling.py::test_formatting_durations - AttributeE... ERROR tests/worker/test_scheduling.py::test_worker_timeout_exceeds_redelivery_timeout ERROR tests/worker/test_scheduling.py::test_replacement_race_condition_stream_tasks ERROR tests/worker/test_scheduling.py::test_replace_task_in_queue_before_stream ERROR tests/worker/test_scheduling.py::test_rapid_replace_operations - Attrib... ERROR tests/worker/test_scheduling.py::test_duplicate_execution_race_condition_non_perpetual_task[default_ttl] ERROR tests/worker/test_scheduling.py::test_duplicate_execution_race_condition_non_perpetual_task[zero_ttl] ERROR tests/worker/test_scheduling.py::test_wrongtype_error_with_legacy_known_task_key ERROR tests/worker/test_scheduling.py::test_replace_task_with_legacy_known_key ERROR tests/worker/test_scheduling.py::test_worker_run_classmethod_memory_backend ERROR tests/worker/test_ttl_zero.py::test_task_executes_with_ttl_zero - Attri... ERROR tests/worker/test_ttl_zero.py::test_state_record_expires_immediately_with_ttl_zero ERROR tests/worker/test_ttl_zero.py::test_result_storage_with_ttl_zero - Attr... ERROR tests/worker/test_ttl_zero.py::test_failed_task_with_ttl_zero - Attribu... ERROR tests/worker/test_ttl_zero.py::test_mixed_ttl_workload - AttributeError... ======================= 69 skipped, 619 errors in 10.57s ======================= RPM build errors: error: Bad exit status from /var/tmp/rpm-tmp.4JftwS (%check) Bad exit status from /var/tmp/rpm-tmp.4JftwS (%check) Finish: rpmbuild python-pydocket-0.17.9-1.fc45.src.rpm Finish: build phase for python-pydocket-0.17.9-1.fc45.src.rpm INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-rawhide-x86_64-1772025190.540876/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-pydocket-0.17.9-1.fc45.src.rpm) Config(fedora-rawhide-x86_64) 0 minutes 30 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 dddb7ea8dc4c4a9788aa58f516cea966 -D /var/lib/mock/fedora-rawhide-x86_64-1772025190.540876/root -a -u mockbuild --capability=cap_ipc_lock --capability=cap_ipc_lock --bind=/tmp/mock-resolv.ggpohrsh:/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 /builddir/build/originals/python-pydocket.spec' Copr build error: Build failed